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:
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.
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.
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 perintahkubectl get workloadallowlist
, bukan jalur ke file daftar yang diizinkan.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 menentukanhostNetwork: true
. - Workload menentukan
hostPID: true
, tetapi daftar yang diizinkan tidak menentukanhostPID: true
. - Workload menentukan volume bernama
data
, tetapi daftar yang diizinkan tidak menentukan volume bernamadata
. - Penampung menentukan variabel lingkungan bernama
ENV_VAR1
danENV_VAR2
, tetapi daftar yang diizinkan tidak menentukan variabel lingkungan ini. - Penampung menentukan image
k8s.gcr.io/diff/image
, tetapi daftar yang diizinkan menentukank8s.gcr.io/pause2
. - Penampung menambahkan kemampuan
SYS_ADMIN
danSYS_PTRACE
, tetapi daftar yang diizinkan tidak mengizinkan penambahan kemampuan ini. - Penampung menentukan pemasangan volume bernama
data
, tetapi daftar yang diizinkan tidak menentukan pemasangan volume bernamadata
.
- Workload menentukan
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
Jika Anda tidak dapat menemukan solusi untuk masalah Anda dalam dokumentasi, lihat Dapatkan dukungan untuk mendapatkan bantuan lebih lanjut, termasuk saran tentang topik berikut:
- Membuka kasus dukungan dengan menghubungi Layanan Pelanggan Cloud.
- Mendapatkan dukungan dari komunitas dengan mengajukan pertanyaan di
StackOverflow
dan menggunakan tag
google-kubernetes-engine
untuk menelusuri masalah yang serupa. Anda juga dapat bergabung ke#kubernetes-engine
channel Slack untuk mendapatkan dukungan komunitas lebih lanjut. - Membuka bug atau permintaan fitur menggunakan issue tracker publik.