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
:
kubectl get allowlistsynchronizer ALLOWLIST_SYNCHRONIZER_NAME -o yaml
L'output è simile al seguente:
...
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"
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:
kubectl get workloadallowlist
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:labels: cloud.google.com/matching-allowlist: ALLOWLIST_NAME
Sostituisci
ALLOWLIST_NAME
con il nome della lista consentita che hai ottenuto nel passaggio precedente. Utilizza il nome dell'output del comandokubectl get workloadallowlist
, non il percorso del file della lista consentita.Salva il manifest e applica il carico di lavoro al cluster:
kubectl apply -f WORKLOAD_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 specificahostNetwork: true
. - Il workload specifica
hostPID: true
, ma la lista consentita non specificahostPID: true
. - Il workload specifica un volume denominato
data
, ma la lista consentita non specifica un volume denominatodata
. - Il container specifica le variabili di ambiente denominate
ENV_VAR1
eENV_VAR2
, ma la lista consentita non le specifica. - Il container specifica l'immagine
k8s.gcr.io/diff/image
, ma la lista consentita specificak8s.gcr.io/pause2
. - Il contenitore aggiunge le funzionalità
SYS_ADMIN
eSYS_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 denominatodata
.
- Il carico di lavoro specifica
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:
- Aprire una richiesta di assistenza contattando l'assistenza clienti cloud.
- 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. - Apertura di bug o richieste di funzionalità utilizzando lo strumento di monitoraggio dei problemi pubblico.