首页 文章

Consul DNS和Kubernetes

提问于
浏览
1

我正在运行在Consul上注册的服务器,在我的Kubernetes 1.8.x集群外部 . 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地址?

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地址 .

相关问题