Относится к How to call a service exposed by a Kubernetes cluster from another Kubernetes cluster in same project.Обнаружение нескольких кластеров Кубернете
Снова повторилось с тех пор, как Кубернетес сильно изменился с июля.
Контекст:
Я работаю над инфраструктурой с несколькими кластерами, служащей для различных целей, например:
- Cluster пробегает услуги/приложения, создающие данные для потребления
- кластера B запускает службы/приложения, потребляющие данные, созданные приложениями в кластере A
- Cluster C запускает службы данных, такие как Redis, Memcache, и т.д.
Все кластеры находятся в пространстве имен default
.
Проблема:
В Kubernetes каждый кластер получает свои собственные kubernetes (в default
имен) и Кубэ-DNS (в kube-system
имен) службы с другим IP.
Что происходит с этой настройкой, так это то, что службы в кластере A и B выше не могут обнаружить (в терминологии обнаружения услуг), скажем, Redis в кластере C. Таким образом, nslookup redis.default.svc.cluster.local
из одной из служб в кластере A/B возвращается с ** server can't find redis.default.svc.cluster.local: NXDOMAIN
. Примечание: Это работает изнутри кластера C.
Я прочитал столько документов, сколько я нашел о kube-dns, и почти все предполагают одну настройку кластера.
Кластеры информация:
Вот /etc/resolv.conf
из двух различных кластеров, показывающие DNS сервера имен без каких-либо общих Kube-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
Обе кластеры имеют эти службы работы с соответствующими IP-адресов для их кластера в kube-system
имен:
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
Что такое идеальное исправление/обновление для этой установки, которые могут получить общие услуги обнаружены во всех кластерах Kubernetes в GCE Окружающая среда?
Спасибо за информацию, CJ! Я столкнулся с этими хаками/решениями, и с Федерацией Куба около полугода, я решил установить одно кластерное решение на данный момент, пока у Кубернете не будет правильного решения. –