Memecahkan masalah deployment workload Autopilot dengan hak istimewa


Halaman ini menunjukkan cara menyelesaikan masalah terkait workload dengan hak 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 dengan hak istimewa

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

Coba opsi resolusi berikut:

  • Pastikan versi GKE cluster Anda memenuhi persyaratan versi beban kerja.
  • Pastikan workload yang Anda deploy adalah workload yang menerapkan file daftar yang diizinkan.

Untuk melihat alasan workload dengan hak istimewa ditolak, 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 akan diterapkan ke workload dengan hak istimewa.

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

  3. Tambahkan label berikut ke bagian spec.metadata.labels dari spesifikasi Pod workload dengan hak 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 beban kerja ke cluster:

    kubectl apply -f WORKLOAD_MANIFEST_FILE
    

    Ganti WORKLOAD_MANIFEST_FILE dengan jalur ke file manifes.

    Output memberikan informasi mendetail tentang kolom dalam workload 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, pelanggaran berikut terjadi:

    • 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.
    • Penampung 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.
    • Penampung menentukan pemasangan volume bernama data, tetapi daftar yang diizinkan tidak menentukan pemasangan volume bernama data.

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

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

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

Langkah berikutnya