Wie kann ich Probleme beheben, wenn ich AWS Secrets Manager in Amazon EKS integriere?

Lesedauer: 3 Minute
0

Ich versuche, AWS Secrets Manager mit Amazon Elastic Kubernetes Service (Amazon EKS) zu integrieren, aber ich erhalte eine Fehlermeldung.

Kurzbeschreibung

Sie können eine Fehlermeldung erhalten, wenn Ihre Pods bei der Integration von AWS Secrets Manager mit Amazon EKS nicht in den Status „Running“ wechseln. Um dieses Problem zu beheben, überprüfen Sie die Protokolle der Secrets-Store-Container-Storage-Interface-Treiber-Pods (CSI), um festzustellen, ob Pods nicht funktionieren.

Auflösung

Anzeige der Secrets-Store-CSI-Treiber-Pods:

kubectl --namespace=kube-system get pods -l "app=secrets-store-csi-driver"

Anzeige der Protokolle aus den Secrets-Store-CSI-Pods:

kubectl --namespace=kube-system logs -f -l "app=secrets-store-csi-driver"

Die folgenden Protokolle zeigen, dass die einzelnen Pods gut funktionieren:

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

Hinweis: Pods, die dieselben Aktionen ausführen, werden als doppelte Einträge angezeigt.

Wenn die SecretProviderClass im VolumeMount nicht im selben Namensraum wie der Pod existiert, erhalten Sie den folgenden Fehler:

* 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

Die SecretProviderClass muss im selben Namensraum wie der Pod existieren.

Der Secrets-Store-CSI-Treiber wird als Daemonset bereitgestellt. Wenn die CSI-Treiber-Pods nicht auf dem Knoten ausgeführt werden, wird der folgende Fehler angezeigt:

* 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

Wenn der Knoten mit einem Makel behaftet ist, fügen Sie im Daemonset des Secrets Store CSI Driver eine Toleranz für diesen Makel hinzu.

Prüfen Sie, ob Knotenselektoren vorhanden sind, die die Secrets-Store-CSI-Treiber-Pods am Knoten hindern:

kubectl --namespace=kube-system describe pods -l "app=secrets-store-csi-driver" | grep Node-Selectors*

Rufen Sie die Labels ab, die mit den Worker-Knoten in Ihrem Pod verbunden sind:

kubectl get node --selector=kubernetes.io/os=linux

Vergleichen Sie die Ausgaben der vorangegangenen Befehle, um sicherzustellen, dass die Bezeichnungen mit den Werten des Knotenselektors übereinstimmen.

Überprüfen Sie, ob der CSI-Treiber für den Cluster bereitgestellt wurde. Alle Pods sollten sich im Status „Running“ befinden.

Führen Sie den folgenden Befehl aus:

kubectl get pods -l app=secrets-store-csi-driver -n kube-system

-oder-

kubectl get daemonset csi-secrets-store-secrets-store-csi-driver -n kube-system

Beispielausgabe:

kubectl get csidriver
NAME                       ATTACHREQUIRED   PODINFOONMOUNT   MODES       AGE
secrets-store.csi.k8s.io   false            true             Ephemeral   110m

Die vorhergehende Ausgabe zeigt, dass der Treiber für den Cluster bereitgestellt wurde. Wenn der Secrets-store.csi.k8s.io nicht gefunden wird, installieren Sie den Treiber neu.

Wenn die Dateien, die die SecretProviderClass eingezogen hat, größer als 4 Mebibyte (MiB) sind, erhalten Sie möglicherweise **FailedMount-**Warnungen mit einer Meldung, die Folgendes enthält:grpc: erhaltende Meldung größer als max. Sie können den Treiber so konfigurieren, dass er Antworten von mehr als 4 MiB akzeptiert. Um größere Antworten zu akzeptieren, geben Sie --max-call-recv-msg-size=size in Bytes für den Secrets Store Container im csi-secrets-store-Daemonset an.

Hinweis: Ersetzen Sie die Größe in Bytes durch die Größe, die der Treiber akzeptieren soll.

Wenn Sie weiterhin Probleme haben, überprüfen Sie die Protokollereignisse in chronologischer Reihenfolge, um festzustellen, ob weitere Fehler aufgetreten sind:

kubectl get events -n kube-system --sort-by='.metadata.creationTimestamp'

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren