In che modo è possibile risolvere i problemi relativi all'integrazione di AWS Secrets Manager con Amazon EKS?
Quando provo a integrare AWS Secrets Manager con Amazon Elastic Kubernetes Service (Amazon EKS), ricevo un errore.
Breve descrizione
Quando integri AWS Secrets Manager con Amazon EKS, puoi ricevere un errore se i tuoi pod non riescono a entrare nello stato Running. Per risolvere questo problema, controlla i log dei driver Secrets Store Container Storage Interface (CSI) per vericcare se qualche pod non funziona.
Soluzione
Per visualizzare i pod del driver Secrets Store CSI, esegui il seguente comando:
kubectl --namespace=kube-system get pods -l "app=secrets-store-csi-driver"
Per visualizzare i log dei pod Secrets Store CSI, esegui il seguente comando:
kubectl --namespace=kube-system logs -f -l "app=secrets-store-csi-driver"
I seguenti log mostrano che ogni pod sta funzionando bene:
I1120 20:21:19.135834 1 secrets-store.go:74] Driver: secrets-store.csi.k8s.io I1120 20:21:19.135857 1 secrets-store.go:75] Version: v0.2.0, BuildTime: 2021-08-12-18:55 I1120 20:21:19.135868 1 secrets-store.go:76] Provider Volume Path: /etc/kubernetes/secrets-store-csi-providers I1120 20:21:19.135874 1 secrets-store.go:77] GRPC supported providers will be dynamically created I1120 20:21:19.135895 1 driver.go:80] "Enabling controller service capability" capability="CREATE_DELETE_VOLUME" I1120 20:21:19.135912 1 driver.go:90] "Enabling volume access mode" mode="SINGLE_NODE_READER_ONLY" I1120 20:21:19.135922 1 driver.go:90] "Enabling volume access mode" mode="MULTI_NODE_READER_ONLY" I1120 20:21:19.135938 1 main.go:172] starting manager I1120 20:21:19.136210 1 server.go:111] Listening for connections on address: //csi/csi.sock I1120 20:21:18.956092 1 exporter.go:33] metrics backend: prometheus
Nota: i pod che eseguono le stesse azioni vengono visualizzati come voci duplicate.
Se SecretProviderClass in volumeMount non esiste nello stesso spazio dei nomi del pod, viene visualizzato il seguente errore:
"Warning FailedMount 3s (x4 over 6s) kubelet, kind-control-plane MountVolume.SetUp failed for volume "secrets-store-inline" : rpc error: code = Unknown desc = failed to get secretproviderclass default/aws, error: secretproviderclasses.secrets-store.csi.x-k8s.io "aws" not found"
SecretProviderClass deve esistere nello stesso spazio dei nomi del pod.
Il driver Secrets Store CSI viene implementato come daemonset. Se i pod del driver CSI non sono in esecuzione sul nodo, viene visualizzato il seguente errore:
"Warning FailedMount 1s (x4 over 4s) kubelet, kind-control-plane MountVolume.SetUp failed for volume "secrets-store-inline" : kubernetes.io/csi: mounter.SetUpAt failed to get CSI client: driver name secrets-store.csi.k8s.io not found in the list of registered CSI drivers"
Se il nodo è contaminato, aggiuungi una tolleranza per la contaminazione nel daemibset del driver Secrets Store CSI.
Controlla se ci sono selettori di nodo che non consentono l'esecuzione dei pod del driver Secrets Store CSI sul nodo:
kubectl --namespace=kube-system describe pods -l "app=secrets-store-csi-driver" | grep Node-Selectors*
Ottieni le etichette associate ai nodi worker nel pod:
kubectl get node --selector=kubernetes.io/os=linux
Confronta i risultati dei comandi precedenti. Assicurati che le etichette corrispondano ai valori del selettore dei nodi.
Controlla se il driver CSI è stato implementato nel cluster e se tutti i pod sono in stato Running:
kubectl get pods -l app=secrets-store-csi-driver -n kube-system
-oppure-
kubectl get daemonset csi-secrets-store-secrets-store-csi-driver -n kube-system
Esempio di output:
kubectl get csidriver NAME ATTACHREQUIRED PODINFOONMOUNT MODES AGE secrets-store.csi.k8s.io false true Ephemeral 110m
L'output precedente mostra che il driver è stato implementato nel cluster. Se secrets-store.csi.k8s.io non viene trovato, reinstalla il driver.
Se i file inseriti da SecretProviderClass sono più grandi di 4 mebibyte (MiB), potresti ricevere avvisi FailedMount. Il messaggio include: grpc: received message larger than max. È possibile configurare il driver per accettare risposte superiori a 4 MiB. Per accettare risposte superiori, specifica**\ --max-call-recv-msg-size=dimensione in byte** per il Secrets Store Container nel daemonset csi-secrets-store.
Nota: sostituisci dimensione in bytes con la dimensione che desideri che il driver accetti. Poiché risposte superiori possono aumentare il consumo di risorse di memoria del container secrets-store, potrebbe essere necessario aumentare il limite di memoria. Se i problemi persistono, controlla gli eventi del log in ordine cronologico per vedere se si sono verificati altri errori:
kubectl get events -n kube-system --sort-by='.metadata.creationTimestamp'
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 7 mesi fa
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 2 anni fa