Come posso risolvere i problemi che si verificano durante l'integrazione di AWS Secrets Manager con Amazon EKS?
Sto cercando di integrare AWS Secrets Manager con Amazon Elastic Kubernetes Service (Amazon EKS), ma ricevo un errore.
Breve descrizione
Puoi ricevere un errore se i pod non entrano nello stato Running (In esecuzione) durante l'integrazione di AWS Secrets Manager con Amazon EKS. Per risolvere questo problema, controlla i registri dai pod del driver Secrets Store Container Storage Interface (CSI) per vedere se alcuni pod non funzionano correttamente.
Risoluzione
Visualizza i pod dei driver CSI di Secrets Store:
kubectl --namespace=kube-system get pods -l "app=secrets-store-csi-driver"
Visualizza i registri dei pod CSI di Secrets Store:
kubectl --namespace=kube-system logs -f -l "app=secrets-store-csi-driver"
I seguenti registri mostrano che ogni pod funziona correttamente:
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 CSI di Secrets Store 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 al nodo è applicato un taint, aggiungi una tolleranza per il taint nel daemonset del driver CSI di Secrets Store.
Controlla se ci sono dei selettori di nodi che impediscono l'esecuzione dei pod del driver CSI di Secrets Store 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 gli output dei comandi precedenti per assicurarti che le etichette corrispondano ai valori del selettore di nodi.
Verifica se il driver CSI è stato implementato nel cluster. Tutti i pod devono essere nello stato Running (In esecuzione).
Esegui il comando:
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
Output di esempio:
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 estratti da SecretProviderClass sono più grandi di 4 mebibyte (MiB), allora potresti ricevere avvisi FailedMount con un messaggio che include grpc: received message larger than max (grpc: ricevuto messaggio troppo grande). È possibile configurare il driver in modo che accetti risposte superiori a 4 MiB. Per accettare risposte più grandi, specifica --max-call-recv-msg-size=dimensione in byte nel container Secrets Store nel daemonset csi-secrets-store.
Nota: sostituisci dimensione in byte con la dimensione che desideri che il driver accetti.
Se hai ancora problemi, controlla il registro eventi 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 un anno fa
- AWS UFFICIALEAggiornata 6 mesi fa
- AWS UFFICIALEAggiornata un mese fa
- AWS UFFICIALEAggiornata 2 mesi fa