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

EKS上Jenkins无法并行执行任务:Agent连接超时问题

Jenkins EKS集群Agent无法连接JNLP端口导致无法并行任务的解决方案

核心问题

从日志可见,Jenkins Master能成功创建Agent Pod,但后续Agent无法通过jenkins-agent.jenkins.svc.cluster.local:50000连接到Master,出现连接超时,导致任务只能串行执行。第一个Agent可正常连接,说明基础通信链路曾正常,问题集中在服务配置、端口监听或网络策略层面。

1. 检查Jenkins Agent服务的可用性

首先确认jenkins-agent服务是否正确关联到Master Pod:

  • 查看服务状态:
    kubectl get svc jenkins-agent -n jenkins
    
    确认PORT(S)列包含50000/TCP,类型为ClusterIP。
  • 检查服务关联的Endpoints:
    kubectl get endpoints jenkins-agent -n jenkins
    
    确保Endpoints列表中存在Jenkins Master Pod的IP和50000端口;若为空或无匹配IP,检查服务的selector与Master Pod的labels是否一致:
    kubectl describe svc jenkins-agent -n jenkins | grep Selector
    kubectl get pod jenkins-0 -n jenkins --show-labels
    
    若selector不匹配,更新服务配置的selector字段。

2. 验证Master Pod的50000端口监听状态

进入Jenkins Master Pod,检查端口是否正常监听:

kubectl exec -it jenkins-0 -n jenkins -- netstat -tulpn | grep 50000

若未找到监听记录,按以下方式处理:

  • 登录Jenkins控制台,进入Manage Jenkins > Configure Global Security,确认TCP port for JNLP agents已设置为50000且未勾选Disable。
  • 若配置正常,重启Master Pod:
    kubectl delete pod jenkins-0 -n jenkins
    

3. 排查网络策略与集群网络限制

  • 检查jenkins命名空间下的NetworkPolicy是否阻止了Agent到Master的50000端口通信:
    kubectl get networkpolicy -n jenkins
    
    若存在限制策略,添加允许Agent Pod访问Master 50000端口的规则,示例:
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: allow-agent-to-master
      namespace: jenkins
    spec:
      podSelector:
        matchLabels:
          app: jenkins
      ingress:
      - from:
        - podSelector:
            matchLabels:
              jenkins/agent: "true" # 根据你的Agent Pod标签调整
        ports:
        - protocol: TCP
          port: 50000
    
  • 检查EKS节点安全组与VPC网络ACL,确保集群内部Pod之间的50000端口TCP流量未被阻止。

4. 临时绕过服务直接测试Pod通信

若服务层面排查无果,直接用Master Pod IP测试Agent连接:

# 获取Master Pod IP
MASTER_IP=$(kubectl get pod jenkins-0 -n jenkins -o jsonpath='{.status.podIP}')
# 进入异常的Agent Pod
kubectl exec -it devops-iac-prod-eu-west-1-1-master-28-71sh2-hhnlk-46vsg -n jenkins -- bash
# 测试端口连通性
telnet $MASTER_IP 50000

若直接连接Pod IP成功,说明jenkins-agent服务存在异常,删除并重新创建服务:

kubectl delete svc jenkins-agent -n jenkins
# 重新应用服务配置(替换为你的服务yaml路径)
kubectl apply -f ./jenkins-agent-service.yaml -n jenkins

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 09:20:22