Memecahkan masalah deployment workload Autopilot dengan hak istimewa


Halaman ini menunjukkan cara menyelesaikan masalah terkait workload istimewa yang Anda deploy di cluster Autopilot Google Kubernetes Engine (GKE).

Masalah sinkronisasi daftar yang diizinkan

Saat Anda men-deploy AllowlistSynchronizer, GKE akan mencoba menginstal dan menyinkronkan file daftar yang diizinkan yang Anda tentukan. Jika sinkronisasi ini gagal, kolom status dari AllowlistSynchronizer akan melaporkan error.

Dapatkan status objek AllowlistSynchronizer:

kubectl get allowlistsynchronizer ALLOWLIST_SYNCHRONIZER_NAME -o yaml

Outputnya mirip dengan hal berikut ini:

...
status:
  conditions:
  - type: Ready
    status: "False"
    reason: "SyncError"
    message: "some allowlists failed to sync: example-allowlist-1.yaml"
    lastTransitionTime: "2024-10-12T10:00:00Z"
    observedGeneration: 2
  managedAllowlistStatus:
    - filePath: "gs://path/to/allowlist1.yaml"
      generation: 1
      phase: Installed
      lastSuccessfulSync: "2024-10-10T10:00:00Z"
    - filePath: "gs://path/to/allowlist2.yaml"
      phase: Failed
      lastError: "Initial install failed: invalid contents"
      lastSuccessfulSync: "2024-10-08T10:00:00Z"

Kolom conditions.message dan kolom managedAllowlistStatus.lastError memberikan informasi mendetail tentang error. Gunakan informasi ini untuk menyelesaikan masalah.

Masalah deployment workload istimewa

Setelah berhasil menginstal daftar yang diizinkan, Anda men-deploy workload istimewa yang sesuai di cluster. Dalam beberapa kasus, GKE mungkin menolak workload.

Coba opsi penyelesaian berikut:

  • Pastikan versi GKE cluster Anda memenuhi persyaratan versi workload.
  • Pastikan workload yang Anda deploy adalah workload yang file daftar yang diizinkan berlaku untuknya.

Untuk mengetahui alasan penolakan workload istimewa, minta informasi mendetail dari GKE tentang pelanggaran daftar yang diizinkan:

  1. Dapatkan daftar daftar yang diizinkan yang diinstal di cluster:

    kubectl get workloadallowlist
    

    Temukan nama daftar yang diizinkan yang harus diterapkan ke workload dengan hak istimewa.

  2. Buka manifes YAML workload istimewa di editor teks. Jika Anda tidak dapat mengakses manifes YAML, misalnya jika proses deployment workload menggunakan alat lain, hubungi penyedia workload untuk melaporkan masalah. Lewati langkah-langkah yang tersisa.

  3. Tambahkan label berikut ke bagian spec.metadata.labels dari spesifikasi Pod workload istimewa:

    labels:
      cloud.google.com/matching-allowlist: ALLOWLIST_NAME
    

    Ganti ALLOWLIST_NAME dengan nama daftar yang diizinkan yang Anda dapatkan di langkah sebelumnya. Gunakan nama dari output perintah kubectl get workloadallowlist, bukan jalur ke file daftar yang diizinkan.

  4. Simpan manifes dan terapkan workload ke cluster:

    kubectl apply -f WORKLOAD_MANIFEST_FILE
    

    Ganti WORKLOAD_MANIFEST_FILE dengan jalur ke file manifes.

    Output memberikan informasi mendetail tentang kolom mana dalam beban kerja yang tidak cocok dengan daftar yang diizinkan yang ditentukan, seperti dalam contoh berikut:

    Error from server (GKE Warden constraints violations): error when creating "STDIN": admission webhook "warden-validating.common-webhooks.networking.gke.io" denied the request:
    
    ===========================================================================
    Workload Mismatches Found for Allowlist (example-allowlist-1):
    ===========================================================================
    HostNetwork Mismatch: Workload=true, Allowlist=false
    HostPID Mismatch: Workload=true, Allowlist=false
    Volume[0]: data
             - data not found in allowlist. Verify volume with matching name exists in allowlist.
    Container[0]:
    - Envs Mismatch:
            - env[0]: 'ENV_VAR1' has no matching string or regex pattern in allowlist.
            - env[1]: 'ENV_VAR2' has no matching string or regex pattern in allowlist.
    - Image Mismatch: Workload=k8s.gcr.io/diff/image, Allowlist=k8s.gcr.io/pause2. Verify that image string or regex match.
    - SecurityContext:
            - Capabilities.Add Mismatch: the following added capabilities are not permitted by the allowlist: [SYS_ADMIN SYS_PTRACE]
    - VolumeMount[0]: data
            - data not found in allowlist. Verify volumeMount with matching name exists in allowlist.
    

    Dalam contoh ini, terjadi pelanggaran berikut:

    • Workload menentukan hostNetwork: true, tetapi daftar yang diizinkan tidak menentukan hostNetwork: true.
    • Workload menentukan hostPID: true, tetapi daftar yang diizinkan tidak menentukan hostPID: true.
    • Workload menentukan volume bernama data, tetapi daftar yang diizinkan tidak menentukan volume bernama data.
    • Penampung menentukan variabel lingkungan bernama ENV_VAR1 dan ENV_VAR2, tetapi daftar yang diizinkan tidak menentukan variabel lingkungan ini.
    • Container menentukan image k8s.gcr.io/diff/image, tetapi daftar yang diizinkan menentukan k8s.gcr.io/pause2.
    • Penampung menambahkan kemampuan SYS_ADMIN dan SYS_PTRACE, tetapi daftar yang diizinkan tidak mengizinkan penambahan kemampuan ini.
    • Container menentukan pemasangan volume bernama data, tetapi daftar yang diizinkan tidak menentukan pemasangan volume bernama data.

Jika Anda men-deploy workload yang disediakan oleh penyedia pihak ketiga, buka masalah dengan penyedia tersebut untuk menyelesaikan pelanggaran. Sertakan output dari langkah sebelumnya dalam masalah ini.

Bug dan permintaan fitur untuk workload dan daftar yang diizinkan yang memiliki hak istimewa

Partner bertanggung jawab untuk membuat, mengembangkan, dan memelihara workload istimewa dan daftar yang diizinkan. Jika Anda menemukan bug atau memiliki permintaan fitur untuk workload atau daftar yang diizinkan yang memiliki hak istimewa, hubungi partner yang bersangkutan.

Langkah berikutnya