Consul DNS 和 Kubernetes
Consul DNS and Kubernetes
我是 运行 正在向 Consul 注册的服务器,在我的 Kubernetes 1.8.x 集群外部。 Consul 在我的 Kube 集群中 运行(由 Helm 配置),并与外部 Consul 集群对等。 Kube-dns 配置为使用内部 Consul pods 作为 "stubDomains" 和以下 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 域名。问题是当 Consul pod 崩溃并使用新的 IP 地址重新启动时。
有没有一种方法可以从 Consul pod 崩溃中恢复,而无需手动更改 kube-dns ConfigMap 中列出的 IP 地址?
我最终修改了 "consul-ui" 服务(具有 IP 地址的服务)以公开 Consul DNS 端口。我将以下内容从 "consul" 服务(没有集群 IP 的服务)复制到 "consul-ui" 服务,在 ["spec"]["port"] 部分:
{
"name": "consuldns-tcp",
"protocol": "TCP",
"port": 8600,
"targetPort": 8600,
"nodePort": 30766
},
{
"name": "consuldns-udp",
"protocol": "UDP",
"port": 8600,
"targetPort": 8600,
"nodePort": 32559
}
然后在 kube-dns ConfigMap 中使用服务 IP 地址而不是 Pod IP 地址。
我是 运行 正在向 Consul 注册的服务器,在我的 Kubernetes 1.8.x 集群外部。 Consul 在我的 Kube 集群中 运行(由 Helm 配置),并与外部 Consul 集群对等。 Kube-dns 配置为使用内部 Consul pods 作为 "stubDomains" 和以下 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 域名。问题是当 Consul pod 崩溃并使用新的 IP 地址重新启动时。
有没有一种方法可以从 Consul pod 崩溃中恢复,而无需手动更改 kube-dns ConfigMap 中列出的 IP 地址?
我最终修改了 "consul-ui" 服务(具有 IP 地址的服务)以公开 Consul DNS 端口。我将以下内容从 "consul" 服务(没有集群 IP 的服务)复制到 "consul-ui" 服务,在 ["spec"]["port"] 部分:
{
"name": "consuldns-tcp",
"protocol": "TCP",
"port": 8600,
"targetPort": 8600,
"nodePort": 30766
},
{
"name": "consuldns-udp",
"protocol": "UDP",
"port": 8600,
"targetPort": 8600,
"nodePort": 32559
}
然后在 kube-dns ConfigMap 中使用服务 IP 地址而不是 Pod IP 地址。