【问题标题】:Kubernetes service discovery using DNS fails使用 DNS 的 Kubernetes 服务发现失败
【发布时间】:2019-05-28 22:19:01
【问题描述】:
我想了解如何为 DNS 服务器信息的副本集的每个 pod 配置 /etc/resolve.conf,因为我将集群从 1.13 升级到 1.14,它以某种方式更改了 kube DNS 服务器的 IP 和现有的副本集正在将旧 IP/信息注入到该副本集的新 pod 的 /etc/resolve.conf 中,从而破坏了这些特定 pod 的服务发现。
即使它不是集群升级,只是重新部署 kube-dns,并且它改变了它的 IP,那么当现有的 replicaSet 或 statefulSets 添加/增加更多 pod 时,它们会如何表现。在我这边,目前,它正在注入旧信息。
新部署工作正常。
【问题讨论】:
标签:
kubernetes
dns
service-discovery
replicaset
【解决方案1】:
pod 将始终从 owner object 继承规范,在这种情况下,从 ReplicaSet 继承规范。
每个 ReplicaSet 都有一个 pod 模板,其中包含 resolv.conf 注册配置,除非推出新的 Deployment,否则不会更改(因为 RSs是Deployment 对象的依赖项):
kubectl get rs YOUR_REPLICASET -o yaml | grep pod-template-hash -m 1
在这种情况下,您可以推出新的 Deployment 版本或重新部署 kube-dns/coreDNS 的 YAML 定义,保留原来的 clusterIP:
spec:
clusterIP: 10.11.0.12 # Old service address