同VPC内Jenkins EC2访问EKS v1.25集群超时,求非0.0.0.0/0的解决方案
解决EKS同一VPC内实例访问API超时问题
方案1:添加Jenkins实例的私有IP/子网CIDR到API白名单
- 获取Jenkins EC2实例的私有IP地址,或其所在子网的CIDR段
- 更新EKS集群的API访问控制规则,将该私有IP/子网CIDR加入允许列表:
- 使用AWS CLI执行:
aws eks update-cluster-config --name <你的集群名称> --resources-vpc-config endpointPublicAccess=true,publicAccessCidrs=["<已有的公网IP>/32","<Jenkins私有IP>/32"] - 或者在AWS控制台进入EKS集群配置页,编辑「公有访问CIDR」列表,添加私有IP/子网CIDR
- 使用AWS CLI执行:
方案2:强制Jenkins实例解析EKS公有端点到公网IP
由于VPC内DNS会自动将EKS公有端点域名解析为私有IP,可通过修改hosts文件强制走公网链路:
- 先查询EKS公有端点的公网IP:
nslookup <你的集群端点域名> | grep 'Address:' | grep -v '127.0.0.1' | tail -n1 - 在Jenkins实例的
/etc/hosts中添加条目:<查询到的公网IP> <你的集群端点域名> - 保存后测试访问,此时请求会走公网链路,匹配你已配置的公网IP白名单
方案3:配置EKS私有端点的访问控制
若希望保留私有链路访问,可针对私有端点配置允许规则:
- 确认EKS集群已开启私有端点(你已完成配置)
- 更新集群VPC配置,添加Jenkins实例所在子网的CIDR到私有访问允许列表:
注:该功能要求EKS版本≥1.21,你的v1.25版本满足要求aws eks update-cluster-config --name <你的集群名称> --resources-vpc-config endpointPrivateAccess=true,privateAccessCidrs=["<Jenkins所在子网CIDR>"]
核心原因说明
AWS EKS的公有端点域名在VPC内部会被DNS解析为私有IP,同一VPC内的实例默认走私有链路访问,此时公网IP白名单不会生效,必须针对私有链路的来源IP配置规则,或强制解析到公网IP绕开私有链路。
内容的提问来源于stack exchange,提问作者DrTheiss
相关产品推荐
相关产品推荐

