1

我正在运行在我的 Kubernetes 1.8.x 集群外部的 Consul 注册的服务器。Consul 在我的 Kube 集群(由 Helm 配置)中运行,并与外部 Consul 集群对等。Kube-dns 配置为使用内部 Consul pod 作为“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 地址?

4

1 回答 1

1

我最终修改了“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
  }

然后使用服务 IP 地址代替 kube-dns ConfigMap 中的 Pod IP 地址。

于 2018-03-14T18:36:18.863 回答