Calico网络Kubernetes集群MySQL服务DNS解析失败问题求助
问题根因
- 配置逻辑错误:你在
new_namespace下创建的mysql服务为ExternalName类型,未配置标签选择器关联MySQL Deployment的Pod,因此没有对应服务端点生成。同时该服务的externalName字段指向自身的集群域名mysql.new_namespace.svc.cluster.local,触发DNS循环查询,最终返回空解析结果。 - 从你提供的集群端点查询结果也可以验证:
new_namespace下不存在mysql服务对应的端点条目,CoreDNS日志中虽然返回NOERROR状态,但没有实际的A记录返回,符合循环解析无结果的特征。
修复方案
删除原有ExternalName类型的mysql服务,替换为ClusterIP类型的服务配置,关联MySQL Pod标签即可:
apiVersion: v1 kind: Service metadata: name: mysql namespace: new_namespace spec: type: ClusterIP selector: app: mysql # 匹配Deployment中定义的Pod标签 ports: - port: 3306 targetPort: 3306 protocol: TCP
验证方法
- 应用新的服务配置后,执行
kubectl get endpoints -n new_namespace mysql,可以看到输出中存在对应的MySQL Pod IP与端口信息。 - 进入dnsutils Pod执行解析测试:
kubectl exec -i -t -nnew_namespace dnsutils -- nslookup mysql,将正常返回服务的ClusterIP地址。
内容的提问来源于stack exchange,提问作者The Kaese
相关产品推荐
相关产品推荐

