You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EKS上Jenkins DIND Agent挂载EFS失败求助

问题排查与解决方案

一、botocore依赖缺失问题修复

虽然你提到镜像已安装boto3和botocore,但报错提示依赖缺失,大概率是镜像构建过程存在问题,按以下步骤验证修复:

  • 检查Dockerfile安装命令:
    针对jenkins/jnlp-agent-docker(Debian/Ubuntu基础镜像),确保命令正确:
    RUN apt-get update && apt-get install -y python3 python3-pip \
        && pip3 install --no-cache-dir boto3 botocore
    
    针对docker:27.0.3-dind(Alpine基础镜像),注意Alpine的包管理前缀:
    RUN apk add --no-cache python3 py3-pip \
        && pip3 install --no-cache-dir boto3 botocore
    
    避免使用静默安装参数(如-q),以便排查包下载失败问题。
  • 本地验证镜像依赖:
    运行镜像进入容器,检查依赖是否存在:
    docker run -it --rm <你的DIND镜像名> /bin/bash
    pip3 list | grep botocore
    
    若无法找到,重新构建镜像并确认安装命令执行无报错。

二、EFS DNS解析失败问题排查

Pod卡在ContainerCreating阶段且EFS DNS解析失败,从以下维度排查:

  • 确认EFS CSI驱动部署状态:
    检查驱动Pod是否正常运行:
    kubectl get pods -n kube-system -l app.kubernetes.io/name=aws-efs-csi-driver
    
    若未部署,通过kubectl部署AWS官方EFS CSI驱动manifest,同时确保EKS节点拥有EFS访问的IAM权限。
  • 检查VPC与子网DNS配置:
    确保EFS挂载目标与EKS节点在同一VPC,且挂载目标所在子网已启用DNS解析(VPC控制台子网配置中勾选对应选项)。
  • 配置Pod DNS策略:
    在Jenkins代理Pod模板中,指定DNS策略为ClusterFirst,避免自定义策略导致解析异常:
    spec:
      dnsPolicy: ClusterFirst
    
  • 手动验证botocore获取挂载IP:
    依赖正常的情况下,在容器内执行以下代码测试:
    import botocore.session
    session = botocore.session.get_session()
    efs_client = session.create_client('efs')
    mounts = efs_client.describe_mount_targets(FileSystemId='<你的EFS ID>')
    print([mt['IpAddress'] for mt in mounts['MountTargets']])
    
    若能输出挂载IP,说明问题出在CSI驱动挂载逻辑;若仍报错,回到镜像依赖排查环节。

三、Jenkins DIND代理额外配置要点

  • 启用特权模式:
    DIND容器需特权模式才能正常运行,在Helm Values中配置:
    agent:
      podTemplates:
        dind-agent:
          containers:
            - name: docker-dind
              image: <你的DIND镜像名>
              privileged: true
    
  • 检查EFS PVC存储类:
    确保PVC使用EFS专用存储类,存储类配置示例:
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: efs-storage-class
    provisioner: efs.csi.aws.com
    parameters:
      provisioningMode: efs-ap
      fileSystemId: <你的EFS ID>
      directoryPerms: "755"
    

内容的提问来源于stack exchange,提问作者Doug

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 19:30:04