我正在运行在 Kubernetes 1.8.x 集群外部注册的 Consul 服务器。Consul 在我的 Kube 集群(由 Helm 配置(内运行,并与外部 Consul 集群对等。Kube-dns 被配置为使用内部 Consul pod 作为"stubDomain",具有以下 ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
name: kube-dns
namespace: kube-system
data:
stubDomains: |
{
"consul": [
"10.244.0.xxx:8600",
"10.244.1.xxx:8600",
"10.244.2.xxx:8600"
]
}
当一切按预期工作时,kube-dns 会解析外部领事域名。问题是当 Consul Pod 崩溃并使用新的 IP 地址重新启动时。
有没有办法从 Consul pod 崩溃中恢复,而不必手动更改 kube-dns 配置Map 中列出的 IP 地址?
我最终修改了"consul-ui"服务(具有IP地址的服务(以公开Consul DNS端口。我将以下内容从"领事"服务(没有集群 IP 的服务(复制到 ["spec"]["port"] 部分中的"consul-ui"服务:
{
"name": "consuldns-tcp",
"protocol": "TCP",
"port": 8600,
"targetPort": 8600,
"nodePort": 30766
},
{
"name": "consuldns-udp",
"protocol": "UDP",
"port": 8600,
"targetPort": 8600,
"nodePort": 32559
}
然后使用 service IP 地址,而不是 kube-dns 配置Map 中的 Pod IP 地址。