EKS环境下Jenkins无法挂载AWS EFS、默认使用GP2存储卷问题求助
问题根因
部署完成后集群自动生成了存储类为gp2、名为jenkins的PVC,说明Jenkins Helm Chart未识别你配置的自定义持久化存储规则,核心问题是Helm values的字段层级配置错误:你将persistence字段嵌套在了controller块下,而官方Jenkins Helm Chart的persistence是顶层配置字段,嵌套后配置完全不生效,Chart就走默认逻辑创建了8G gp2存储的PVC。
解决方案
1. 修正Helm values配置
将persistence块从controller下移出,作为顶层字段配置,已经指定existingClaim的情况下无需再填写storageClassName:
# 顶层配置,不要放在controller块内部 persistence: enabled: true existingClaim: efs-pvc controller: componentName: jenkins-controller image: "jenkins/jenkins" tag: lts-jdk11 imagePullPolicy: IfNotPresent installPlugins: false disableRememberMe: false resources: requests: cpu: 2 memory: 2Gi limits: cpu: 6 memory: 4Gi runAsUser: 1000 fsGroup: 1000 serviceType: ClusterIP ingress: enabled: true apiVersion: "networking.k8s.io/v1" ingressClassName: nginx kubernetes.io/ingress.class: nginx rules: - host: foo.jenkins.com http: paths: - path: / pathType: Prefix backend: service: name: jenkins port: number: 80 tls: - secretName: jenkins-tls hosts: - foo.jenkins.com
2. 清理冗余资源重新部署
先删除之前错误生成的PVC:
kubectl delete pvc jenkins -n jenkins
再用修正后的values重新部署Jenkins:
helm upgrade --install jenkins jenkins/jenkins -n jenkins -f <你的values文件路径>
3. 验证配置生效
部署完成后执行kubectl get pvc -n jenkins,仅保留你预先创建的efs-pvc即代表配置生效,进入Jenkins Pod执行mount | grep nfs4即可查到EFS挂载记录。
其他补充排查点
如果修正配置后仍有问题,可检查以下项:
- 确认PV的
volumeHandle字段值正确,格式为实际EFS文件系统ID::实际EFS访问点ID,不要使用示例占位值 - 确认EFS挂载目标的安全组入方向放开了EKS集群节点安全组的2049 TCP端口(你已用busybox验证过挂载正常可跳过此项)
- 确认EFS CSI驱动关联的ServiceAccount已绑定对应IAM权限,可正常调用EFS相关接口(你已用busybox验证过挂载正常可跳过此项)
内容的提问来源于stack exchange,提问作者hannibal
相关产品推荐
相关产品推荐

