Настройка VPN с доступом к нескольким кластерам и службам GKE k8s - PullRequest
1 голос
/ 05 марта 2020

Я хочу настроить WireGuard (но Wireguard не имеет отношения) VPN, чтобы сделать модули и службы GKE доступными через эту VPN. У нас есть несколько кластеров, которые мы хотим быть доступными через одно и то же VPN-соединение. Например:

  • *.cluster1.local разрешается в GKE cluster-1*.cluster.local
  • *.cluster2.local разрешается в GKE cluster-2*.cluster.local

В этом случае мне придется создать DNS, который будет перезаписывать хосты, но я просто еще не там.

В данный момент я застрял, потому что не могу получить доступ к IP-адресам служб этих кластеров. и pods (я создаю экземпляр с Ubuntu 16 и выполняю curl http://<some-k8s-service-ip>:<port of that service>/) из-за тайм-аута.

Кажется, что каждый кластер изолирован, и я в принципе не могу получить к нему доступ через внутренний IP, даже если GCE Экземпляр VPN находится в той же сети, что и кластер. Например, я могу сделать curl http://10.0.26.219:4000/ (этот адрес разрешается в конкретную службу c k8s) изнутри кластера, но я не могу сделать это из случайного экземпляра GCE, который я создаю (он находится в той же сети, что и Кластеры GKE).

Я установил правило брандмауэра, разрешающее всем входящим и исходящим трафикам c любые порты, но это не сработало.

Чтобы уточнить, все находится в та же сеть (ес-север-4) и VP C.

Возможно, у кого-нибудь был опыт настройки такого VPN? Пожалуйста, дайте мне знать, если есть информация, которую я мог бы предоставить, потому что есть так много вещей, чтобы рассмотреть. Короче, это все настройки по умолчанию, кроме частных кластеров.

1 Ответ

3 голосов
/ 06 марта 2020

clusterIPs никогда не доступны снаружи кластера. Причина этого заключается в том, что clusterIP существует, как правило, только в iptables различных узлов GKE.

Вам потребуется использовать либо службу NodePort, либо службу LoadBalancer (LB будет использовать внутренний IP-адрес), чтобы выставить свой рабочие нагрузки вне кластера.

Вы также можете напрямую обращаться к IP-адресам модуля, хотя это не рекомендуется, поскольку IP-адреса модуля не установлены c и будут меняться, если по какой-либо причине модуль был перенесен.

К сожалению, это будет не используйте встроенный кластерный DNS с использованием cluster.local, как вы уже сказали, что вы хотели бы сделать. Вместо этого вы можете настроить DNS для разрешения определенных c рабочих нагрузок с указанием c внутренних IP-адресов LoadBalancer, которые будут иметь статус c.

...