Dns Kubernetes多群集服务发现

Dns Kubernetes多群集服务发现,dns,kubernetes,google-kubernetes-engine,service-discovery,skydns,Dns,Kubernetes,Google Kubernetes Engine,Service Discovery,Skydns,涉及 自7月以来,库伯内特斯又一次提问,变化很大 上下文: 我正在开发一个具有多个群集的基础架构,这些群集服务于不同的目的,例如: 群集A运行服务/应用程序,创建用于消费的数据 群集B运行使用群集A中应用创建的数据的服务/应用 集群C运行诸如Redis、Memcache等数据服务 所有集群都位于默认命名空间中 问题: 在Kubernetes中,每个集群都使用不同的IP获得自己的Kubernetes(在默认的命名空间中)和kube dns(在kube系统命名空间中)服务 这种设置的结果是,上

涉及

自7月以来,库伯内特斯又一次提问,变化很大

上下文:

我正在开发一个具有多个群集的基础架构,这些群集服务于不同的目的,例如:

  • 群集A运行服务/应用程序,创建用于消费的数据
  • 群集B运行使用群集A中应用创建的数据的服务/应用
  • 集群C运行诸如Redis、Memcache等数据服务
所有集群都位于
默认
命名空间中

问题:

在Kubernetes中,每个集群都使用不同的IP获得自己的Kubernetes(在
默认的
命名空间中)和kube dns(在
kube系统
命名空间中)服务

这种设置的结果是,上面集群A和B中的服务无法发现(在服务发现术语中),比方说,集群C中的Redis。因此A
nslookup Redis.default.svc.cluster.local
从集群A/B中的一个服务返回,
**服务器找不到Redis.default.svc.cluster.local:NXDOMAIN
。注意:这在集群C中起作用

我已经阅读了很多关于kube dns的文档,几乎所有文档都假设一个集群设置

群集信息:

以下是来自两个不同集群的
/etc/resolv.conf
,显示没有共同kube DNS祖先的DNS名称服务器:

A组:

nameserver 10.67.240.10
nameserver 169.254.169.254
nameserver 10.240.0.1
search default.svc.cluster.local svc.cluster.local cluster.local c.project-name.internal. 1025230764914.google.internal. google.internal.
C组:

nameserver 10.91.240.10
nameserver 169.254.169.254
nameserver 10.240.0.1
search default.svc.cluster.local svc.cluster.local cluster.local c.project-name.internal. google.internal.
options ndots:5
这两个集群都在
kube系统
命名空间中为其集群运行这些服务,并使用各自的IP:

NAME                  LABELS                                                                           SELECTOR           
kube-dns              k8s-app=kube-dns,kubernetes.io/cluster-service=true,kubernetes.io/name=KubeDNS   k8s-app=kube-dns
kube-ui               k8s-app=kube-ui,kubernetes.io/cluster-service=true,kubernetes.io/name=KubeUI     k8s-app=kube-ui
monitoring-heapster   kubernetes.io/cluster-service=true,kubernetes.io/name=Heapster                   k8s-app=heapster

此设置的理想修复/更新是什么,可以在GCE环境中跨所有Kubernetes群集发现共享服务?

这是Kubernetes作为群集联合计划的一部分试图解决的一个大问题。您还可以签出/贡献给

如果您使用了所描述的hacks解决方案之一,那么您可能可以对
/etc/resolve.conf
进行hacks,以便从另一个集群中搜索名称服务器。小心,因为这可能会使您遇到截断问题

您还可以修改集群的,以包括一个额外的kube2sky吊舱,该吊舱指向另一个集群的kubernetes服务(我还没有尝试过,也没有考虑过所有的影响)


我上面描述的两种黑客攻击都不能防止名称冲突,因此您必须手动防止名称冲突。

谢谢您提供的信息,CJ!我遇到过这些黑客/解决方案,距离Kube Federation大约还有半年的时间,在Kubernetes找到合适的解决方案之前,我已经决定采用单集群解决方案。