EKS Fargate部署EFS CSI驱动时efs-csi-controller报错如何处理?
报错原因
EKS Fargate对Pod运行配置有明确限制,禁止使用HostNetwork、特权容器、HostIP/HostPort这类需要直接访问宿主机资源的配置,你当前的Deployment存在两处Fargate不支持的配置:
- Pod级别开启了
hostNetwork: true - efs-plugin容器配置了
securityContext.privileged: true
解决方案
步骤1:修改Deployment配置
删除对应不支持的配置字段即可,修改后的Pod spec片段如下:
spec: containers: - args: - --endpoint=$(CSI_ENDPOINT) - --logtostderr - --v=2 - --delete-access-point-root-dir=false env: - name: CSI_ENDPOINT value: unix:///var/lib/csi/sockets/pluginproxy/csi.sock image: 602401143452.dkr.ecr.ap-south-1.amazonaws.com/eks/aws-efs-csi-driver:v1.3.4 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 5 httpGet: path: /healthz port: healthz initialDelaySeconds: 10 periodSeconds: 10 timeoutSeconds: 3 name: efs-plugin ports: - containerPort: 9909 name: healthz protocol: TCP # 已删除privileged特权配置 volumeMounts: - mountPath: /var/lib/csi/sockets/pluginproxy/ name: socket-dir # csi-provisioner、liveness-probe配置保持不变 # 已删除hostNetwork: true配置 nodeSelector: kubernetes.io/os: linux priorityClassName: system-cluster-critical serviceAccountName: efs-csi-controller-sa volumes: - emptyDir: {} name: socket-dir
步骤2:重新部署生效
执行命令更新Deployment:
kubectl apply -f <修改后的配置文件路径>
可选方案(集群存在EC2节点组时适用)
如果你的EKS集群同时包含EC2节点组,可以给efs-csi-controller添加nodeSelector,将其调度到EC2节点运行,不需要修改原有配置:
nodeSelector: kubernetes.io/os: linux eks.amazonaws.com/compute-type: ec2
内容的提问来源于stack exchange,提问作者Abhijeet
相关产品推荐
相关产品推荐

