Questa pagina mostra come risolvere i problemi relativi ai carichi di lavoro privilegiati che esegui il deployment nei cluster Google Kubernetes Engine (GKE) Autopilot.
Problemi di sincronizzazione della lista consentita
Quando esegui il deployment di un AllowlistSynchronizer, GKE tenta di installare e sincronizzare i file della lista consentita che specifichi. Se questa
sincronizzazione non riesce, il campo status dei report AllowlistSynchronizer
segnala l'errore.
Ottieni lo stato dell'oggetto AllowlistSynchronizer:
Il campo conditions.message e il campo managedAllowlistStatus.lastError
forniscono informazioni dettagliate sull'errore. Utilizza queste informazioni per risolvere
il problema.
Problemi di deployment dei workload privilegiati
Dopo aver installato correttamente una lista consentita, esegui il deployment del carico di lavoro con privilegi corrispondente nel cluster. In alcuni casi, GKE potrebbe
rifiutare il workload.
Prova le seguenti opzioni di risoluzione:
Assicurati che la versione GKE del cluster soddisfi il requisito di versione del workload.
Assicurati che il workload che stai eseguendo il deployment sia quello a cui si applica il file
della lista consentita.
Per scoprire perché un workload privilegiato è stato rifiutato, richiedi informazioni dettagliate
a GKE sulle violazioni della lista consentita:
Visualizza un elenco delle liste consentite installate nel cluster:
kubectlgetworkloadallowlist
Trova il nome della lista consentita da applicare al workload privilegiato.
Apri il manifest YAML del workload con privilegi in un editor di testo. Se non riesci ad accedere ai manifest YAML, ad esempio se il processo di deployment del workload utilizza altri strumenti, contatta il fornitore del workload per aprire un problema. Ignora i passaggi rimanenti.
Aggiungi la seguente etichetta alla sezione spec.metadata.labels della specifica del pod del carico di lavoro con privilegi:
Sostituisci ALLOWLIST_NAME con il nome della
lista consentita che hai ottenuto nel passaggio precedente. Utilizza il nome
dell'output del comando kubectl get workloadallowlist, non il percorso del
file della lista consentita.
Salva il manifest e applica il carico di lavoro al cluster:
kubectlapply-fWORKLOAD_MANIFEST_FILE
Sostituisci WORKLOAD_MANIFEST_FILE con il percorso del file manifest.
L'output fornisce informazioni dettagliate sui campi del workload
che non corrispondono alla lista consentita specificata, come nel seguente esempio:
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.
In questo esempio, si verificano le seguenti violazioni:
Il carico di lavoro specifica hostNetwork: true, ma la lista consentita non specifica hostNetwork: true.
Il workload specifica hostPID: true, ma la lista consentita non specifica
hostPID: true.
Il workload specifica un volume denominato data, ma la lista consentita non
specifica un volume denominato data.
Il container specifica le variabili di ambiente denominate ENV_VAR1 e
ENV_VAR2, ma la lista consentita non le specifica.
Il container specifica l'immagine k8s.gcr.io/diff/image, ma la
lista consentita specifica k8s.gcr.io/pause2.
Il contenitore aggiunge le funzionalità SYS_ADMIN e SYS_PTRACE, ma la lista consentita non consente l'aggiunta di queste funzionalità.
Il container specifica un montaggio del volume denominato data, ma la lista consentita
non specifica un montaggio del volume denominato data.
Se stai eseguendo il deployment di un carico di lavoro fornito da un provider di terze parti,
apri un problema con il provider per risolvere le violazioni. Fornisci l'output
del passaggio precedente nel problema.
Bug e richieste di funzionalità per workload con privilegi e liste consentite
I partner sono responsabili della creazione, dello sviluppo e della manutenzione dei propri
carichi di lavoro privilegiati e delle liste consentite. Se riscontri un bug o hai una richiesta di funzionalità per un carico di lavoro privilegiato o una lista consentita, contatta il partner corrispondente.
Passaggi successivi
Se non riesci a trovare una soluzione al tuo problema nella documentazione, consulta la sezione
Richiedere assistenza per ulteriore aiuto,
inclusi consigli sui seguenti argomenti:
Ricevere assistenza dalla community
ponendo domande su StackOverflow e utilizzando il tag google-kubernetes-engine per cercare problemi simili. Puoi anche unirti al
canale Slack #kubernetes-engine
per ulteriore assistenza della community.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-09-01 UTC."],[],[],null,["# Troubleshoot deploying privileged Autopilot workloads\n\n[Autopilot](/kubernetes-engine/docs/concepts/autopilot-overview)\n\n*** ** * ** ***\n\nThis page shows you how to resolve issues with privileged workloads that you\ndeploy in Google Kubernetes Engine (GKE) Autopilot clusters.\n\nAllowlist synchronization issues\n--------------------------------\n\nWhen you deploy an `AllowlistSynchronizer`, GKE attempts to\ninstall and synchronize the allowlist files that you specify. If this\nsynchronization fails, the `status` field of the `AllowlistSynchronizer`\nreports the error.\n\nGet the status of the `AllowlistSynchronizer` object: \n\n kubectl get allowlistsynchronizer \u003cvar translate=\"no\"\u003eALLOWLIST_SYNCHRONIZER_NAME\u003c/var\u003e -o yaml\n\nThe output is similar to the following: \n\n ...\n status:\n conditions:\n - type: Ready\n status: \"False\"\n reason: \"SyncError\"\n message: \"some allowlists failed to sync: example-allowlist-1.yaml\"\n lastTransitionTime: \"2024-10-12T10:00:00Z\"\n observedGeneration: 2\n managedAllowlistStatus:\n - filePath: \"gs://path/to/allowlist1.yaml\"\n generation: 1\n phase: Installed\n lastSuccessfulSync: \"2024-10-10T10:00:00Z\"\n - filePath: \"gs://path/to/allowlist2.yaml\"\n phase: Failed\n lastError: \"Initial install failed: invalid contents\"\n lastSuccessfulSync: \"2024-10-08T10:00:00Z\"\n\nThe `conditions.message` field and the `managedAllowlistStatus.lastError` field\nprovide detailed information about the error. Use this information to resolve\nthe issue.\n\nPrivileged workload deployment issues\n-------------------------------------\n\nAfter successfully installing an allowlist, you deploy the corresponding\nprivileged workload in your cluster. In some cases, GKE might\nreject the workload.\n\nTry the following resolution options:\n\n- Ensure that the GKE version of your cluster meets the version requirement of the workload.\n- Ensure that the workload that you're deploying is the workload to which the allowlist file applies.\n\nTo see why a privileged workload was rejected, request detailed information\nfrom GKE about allowlist violations:\n\n1. Get a list of the installed allowlists in the cluster:\n\n kubectl get workloadallowlist\n\n Find the name of the allowlist that should apply to the privileged workload.\n2. Open the YAML manifest of the privileged workload in a text editor. If you\n can't access the YAML manifests, for example if the workload deployment\n process uses other tooling, contact the workload provider to open\n an issue. Skip the remaining steps.\n\n3. Add the following label to the `spec.metadata.labels` section of the\n privileged workload Pod specification:\n\n labels:\n cloud.google.com/matching-allowlist: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eALLOWLIST_NAME\u003c/span\u003e\u003c/var\u003e\n\n Replace \u003cvar translate=\"no\"\u003eALLOWLIST_NAME\u003c/var\u003e with the name of the\n allowlist that you obtained in the previous step. Use the name from the\n output of the `kubectl get workloadallowlist` command, not the path to the\n allowlist file.\n4. Save the manifest and apply the workload to the cluster:\n\n kubectl apply -f \u003cvar translate=\"no\"\u003eWORKLOAD_MANIFEST_FILE\u003c/var\u003e\n\n Replace \u003cvar translate=\"no\"\u003eWORKLOAD_MANIFEST_FILE\u003c/var\u003e with the path to the\n manifest file.\n\n The output provides detailed information about which fields in the workload\n didn't match the specified allowlist, like in the following example: \n\n Error from server (GKE Warden constraints violations): error when creating \"STDIN\": admission webhook \"warden-validating.common-webhooks.networking.gke.io\" denied the request:\n\n ===========================================================================\n Workload Mismatches Found for Allowlist (example-allowlist-1):\n ===========================================================================\n HostNetwork Mismatch: Workload=true, Allowlist=false\n HostPID Mismatch: Workload=true, Allowlist=false\n Volume[0]: data\n - data not found in allowlist. Verify volume with matching name exists in allowlist.\n Container[0]:\n - Envs Mismatch:\n - env[0]: 'ENV_VAR1' has no matching string or regex pattern in allowlist.\n - env[1]: 'ENV_VAR2' has no matching string or regex pattern in allowlist.\n - Image Mismatch: Workload=k8s.gcr.io/diff/image, Allowlist=k8s.gcr.io/pause2. Verify that image string or regex match.\n - SecurityContext:\n - Capabilities.Add Mismatch: the following added capabilities are not permitted by the allowlist: [SYS_ADMIN SYS_PTRACE]\n - VolumeMount[0]: data\n - data not found in allowlist. Verify volumeMount with matching name exists in allowlist.\n\n In this example, the following violations occur:\n - The workload specifies `hostNetwork: true`, but the allowlist doesn't specify `hostNetwork: true`.\n - The workload specifies `hostPID: true`, but the allowlist doesn't specify `hostPID: true`.\n - The workload specifies a volume named `data`, but the allowlist doesn't specify a volume named `data`.\n - The container specifies environment variables named `ENV_VAR1` and `ENV_VAR2`, but the allowlist doesn't specify these environment variables.\n - The container specifies the image `k8s.gcr.io/diff/image`, but the allowlist specifies `k8s.gcr.io/pause2`.\n - The container adds the `SYS_ADMIN` and `SYS_PTRACE` capabilities, but the allowlist doesn't allow adding these capabilities.\n - The container specifies a volume mount named `data`, but the allowlist doesn't specify a volume mount named `data`.\n\nIf you're deploying a workload that's provided by a third-party provider,\nopen an issue with that provider to resolve the violations. Provide the output\nfrom the previous step in the issue.\n\nBugs and feature requests for privileged workloads and allowlists\n-----------------------------------------------------------------\n\nPartners are responsible for creating, developing, and maintaining their\nprivileged workloads and allowlists. If you encounter a bug or have a feature\nrequest for a privileged workload or allowlist, contact the corresponding\npartner.\n\nWhat's next\n-----------\n\n- If you can't find a solution to your problem in the documentation, see\n [Get support](/kubernetes-engine/docs/getting-support) for further help,\n including advice on the following topics:\n\n - Opening a support case by contacting [Cloud Customer Care](/support-hub).\n - Getting support from the community by [asking questions on StackOverflow](http://stackoverflow.com/questions/tagged/google-kubernetes-engine) and using the `google-kubernetes-engine` tag to search for similar issues. You can also join the [`#kubernetes-engine` Slack channel](https://googlecloud-community.slack.com/messages/C0B9GKTKJ/) for more community support.\n - Opening bugs or feature requests by using the [public issue tracker](/support/docs/issue-trackers)."]]