如何解决 AWS Secrets Manager 与 Amazon EKS 集成的问题?
我尝试将 AWS Secrets Manager 与 Amazon Elastic Kubernetes Service (Amazon EKS) 集成,但收到错误消息。
简短描述
将 AWS Secrets Manager 与 Amazon EKS 集成时,如果您的 Pod 未能进入正在运行状态,则您可能会收到错误消息。要解决此问题,请检查 Secrets Store Container Storage Interface (CSI) 驱动程序 Pod 中的日志,以查看是否有任何未执行的 Pod。
解决方法
显示 Secrets Store CSI 驱动程序 Pod:
kubectl --namespace=kube-system get pods -l "app=secrets-store-csi-driver"
显示 Secrets Store CSI Pod 中的日志:
kubectl --namespace=kube-system logs -f -l "app=secrets-store-csi-driver"
以下日志显示每个 Pod 运行良好:
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
**注意:**执行相同操作的 Pod 显示为重复条目。
如果 volumeMount 中的 SecretProviderClass 与 Pod 不在同一命名空间中,则您会收到以下错误消息:
* 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 必须与 Pod 位于同一命名空间中。
Secrets Store CSI 驱动程序已部署为守护进程。如果 CSI 驱动程序 Pod 未在节点上运行,则您会收到以下错误消息:
* 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
如果节点受到污染,则在 Secrets Store CSI 驱动程序守护进程中添加对污点的容忍度。
检查是否有任何节点选择器阻止 Secrets Store CSI 驱动程序 Pod 在节点上运行:
kubectl --namespace=kube-system describe pods -l "app=secrets-store-csi-driver" | grep Node-Selectors*
获取与 Pod 中的 Worker 节点关联的标签:
kubectl get node --selector=kubernetes.io/os=linux
比较上述命令的输出,以确保标签与节点选择器值匹配。
检查 CSI 驱动程序是否已部署到集群。所有 Pod 都应处于正在运行状态。
运行以下命令:
kubectl get pods -l app=secrets-store-csi-driver -n kube-system
– 或者 –
kubectl get daemonset csi-secrets-store-secrets-store-csi-driver -n kube-system
示例输出:
kubectl get csidriver NAME ATTACHREQUIRED PODINFOONMOUNT MODES AGE secrets-store.csi.k8s.io false true Ephemeral 110m
上面的输出显示驱动程序已部署到集群。如果找不到 secrets-store.csi.k8s.io,请重新安装驱动程序。
如果 SecretProviderClass 提取的文件大于 4 兆字节 (MiB),则您可能会收到 FailedMount 警告,其中包含一条消息 grpc: received message larger than max(grpc:收到的消息大于最大值)。您可以将驱动程序配置为接受大于 4MiB 的响应。为了接受更大的响应,请在 csi-secrets-store 守护进程中为 Secrets Store 容器指定 --max-call-recv-msg-size=size in bytes。
**注意:**请将 size in bytes(大小[字节])替换为您希望驱动程序接受的大小。
如果您仍有问题,请按时间顺序查看日志事件,以了解是否发生了任何其他故障:
kubectl get events -n kube-system --sort-by='.metadata.creationTimestamp'
相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前