GKE - разрешение Kube-DNS для сети VPN - PullRequest
0 голосов
/ 08 октября 2018

Новичок в GCloud и GKE и разочаровывает время с DNS.

У нас есть VPN между нашим офисом и GCloud, использующим Shared VPC.Существующие правила брандмауэра работают нормально.Мы можем пропинговать оба пути, мы можем успешно подключиться к Google по ssh.

Так что теперь из GKE нам нужно разрешить имена хостов через VPN с использованием DNS.Должно быть просто.

Я отредактировал карту конфигурации kube-dns и добавил наше внутреннее доменное имя, используя stubDomains, указывающий на два наших DNS-сервера.После того, как модули kube-dns были повторно развернуты, я убедился, что в журналах они получают новый раздел stubDomain.Однако я до сих пор не могу разрешить хосты, даже из самих контейнеров kube-dns.

При входе в контейнер dnsmasq:

/etc/k8s/dns/dnsmasq-nanny # cat stubDomains
{"internal.domain.com": ["10.85.128.5", "10.85.128.6"]}

/ # nslookup google.com
nslookup: can't resolve '(null)': Name does not resolve

Name:      google.com
Address 1: 108.177.9.138 ox-in-f138.1e100.net
Address 2: 108.177.9.101 ox-in-f101.1e100.net
Address 3: 108.177.9.139 ox-in-f139.1e100.net
Address 4: 108.177.9.100 ox-in-f100.1e100.net
Address 5: 108.177.9.102 ox-in-f102.1e100.net
Address 6: 108.177.9.113 ox-in-f113.1e100.net
Address 7: 2607:f8b0:4003:c13::71 ox-in-x71.1e100.net

/etc/k8s/dns/dnsmasq-nanny # cd /
/ # nslookup rancher.internal.domain.com
nslookup: can't resolve '(null)': Name does not resolve

nslookup: can't resolve 'rancher.internal.domain.com': Name does not resolve

nslookup: can't resolve 'rancher.internal.domain.com': Name does not resolve
/ # nslookup rancher.internal.domain.com 10.85.128.5
Server:    10.85.128.5
Address 1: 10.85.128.5

nslookup: can't resolve 'rancher.internal.domain.com': Name does not resolve

Теперь, насколько я могу судить, Egressпредполагается, что это явное разрешение от Google на что-либо еще.

Но на всякий случай я добавил выходное правило, разрешающее TCP / UDP 53 для серверов.Также не повезло.

Есть мысли?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Подводя итог нашему обсуждению в комментариях для широкой публики:

Вы можете использовать конфигурационный файл kube-DNS для добавления доменов stub, которые ваши модули будут использовать для разрешения имен.После изменения карты конфигурации необходимо заново создать модули kube-dns, чтобы изменения вступили в силу.Любой модуль, использующий настройки DNS по умолчанию ( clusterFirst по умолчанию ), будет разрешен с использованием kube-dns.

Модуль использует настройку «по умолчанию» для конфигурации dns (разрешить для узла resolv.conf)будет игнорировать stubDomains, настроенные в configmap.Вместо этого нам нужно обновить файл resol.conf узлов.

Для этого нужно отметить две вещи.1) Файл resolv.conf на каждой виртуальной машине GCE (включая узлы) перезаписывается сервером метаданных при каждом продлении аренды DHCP .2) Невозможно программно добавлять записи DNS во время создания кластера.

Чтобы решить эту проблему, используйте daemonset в качестве сценария запуска , который добавит новые дополнительные серверы имен в разрешение.файл conf и затем, чтобы сервер метаданных не вернул файл обратно, делает файл неизменным

0 голосов
/ 09 октября 2018

Я пытаюсь угадать, потому что у нас нет конфигурации вашего кластера GKE, но я уже сталкивался с чем-то похожим, и держу пари, что вы не настраивали IP Aliasing https://cloud.google.com/kubernetes-engine/docs/how-to/alias-ips

Небольшое объяснение: вы не можете получить доступ к vpc-серверу из другого vpc-сервера, это означает, что если вы находитесь в VPC, вы не можете получить доступ к управляемой службе из общего подключения к другому проекту или вашему офису (возможно, через туннелирование vpn ipsec).).Поскольку GKE является управляемой службой, по умолчанию она будет находиться в частной сети и открывать жемчужину для вашего проекта, поэтому вы не сможете использовать много вещей (прометей для мониторинга или для разрешения DNS, поскольку кластер не будет знать, какприсоединитесь к другой сети).

IP Aliasing устраняет этот факт, создавая кластер внутри сети вашего проекта, чтобы вы могли получить доступ к вашему кластеру в том же диапазоне IP-адресов, что и остальная часть вашего проекта, и использоватьvpc pearing.

Надеюсь, это решит вашу проблему.

...