EKS集群中如何使用Kubernetes服务全名替代AWS节点IP配置访问
解决方案
核心原理
Kubernetes集群默认内置CoreDNS服务提供集群内服务发现能力,同一集群内的Pod可以直接通过服务名访问对应Service,无需感知后端Pod、节点的IP变化,访问链路完全由K8s内部网络承载,不受节点漂移影响。
具体修改步骤
1. 修正MongoDB连接配置
你当前MongoDB的Service端口为27017(ClusterIP端口),NodePort30003是对外暴露的节点端口,同集群内访问无需走NodePort,直接修改ConfigMap中mongodb配置:
host从节点IP改为mongodb-service(如果两个服务不在同一个命名空间,格式为mongodb-service.命名空间名.svc.cluster.local)port从30003改为服务的ClusterIP端口27017
2. 修正Git地址配置
你当前Git地址用的是节点IP+30001端口,分两种场景处理:
- 如果Git服务部署在同一EKS集群内:给Git服务创建ClusterIP类型Service,将
prefixUrl中的10.255.12.11:30001替换为Git的服务名+对应服务端口即可 - 如果Git服务部署在集群外:建议给Git服务绑定固定EIP或配置私有域名,替换原有节点IP
修改后的ConfigMap示例
apiVersion: v1 kind: ConfigMap metadata: name: ama-settings labels: conf: ams-settings data: config : | "git": { "prefixUrl": "ssh://git@[Git服务名/固定域名/EIP]:[Git服务端口]/app-server/repos/ams/", "author": { "name": "app poc", "mail": "app@domain.com" }, "mongodb": { "host": "mongodb-service", "port": "27017", "database": "ams", "ssl": false, }
验证方法
修改ConfigMap后重启ams应用Pod,进入ams Pod执行如下命令验证连通性:
- 验证MongoDB服务解析:
nslookup mongodb-service,可正常返回对应ClusterIP即解析正常 - 验证端口连通性:
telnet mongodb-service 27017,可连通即配置生效
内容的提问来源于stack exchange,提问作者Gowmi
相关产品推荐
相关产品推荐

