Назад | Перейти на главную страницу

Как сделать службы GKE видимыми для другого кластера GKE, работающего в другом VPC

Я изо всех сил пытаюсь сделать сервисы видимыми через одноранговый VPC.

У меня два кластера GKE (cluster-A и cluster-B) каждый из них в другом VPC.

Я создал пиринговую сеть VPC, соединяющую оба VPC.

Я выполнил инструкции, чтобы включить ip-masquerade-agent и позволять кластерам связываться друг с другом (https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent)

Дело в том, что когда я пытаюсь cluster-A к завиток а Стручок в cluster-B это работает, но когда я делаю curl а обслуживание это не работает.

Из стручка, работающего в cluster-A:

$ curl http://10.132.0.13:8080 # cluster-B Pod
Hello World

$ curl http://10.134.145.111:8080 # cluster-B Service
curl: Connection timed out

Как сделать службы видимыми в обоих кластерах?

Важная информация, которая может помочь:

кластер-A

servicesIpv4Cidr: 10.30.0.0/18
clusterIpv4Cidr: 10.32.0.0/11

ip-masq-agent configmap:

apiVersion: v1
kind: ConfigMap
data:
  config: |
    nonMasqueradeCIDRs:
    - 10.32.0.0/11
    - 10.30.0.0/18
    resyncInterval: 60s
    masqLinkLocal: true
metadata:
  name: ip-masq-agent
  namespace: kube-system

кластер-B

servicesIpv4Cidr: 10.134.0.0/16
clusterIpv4Cidr: 10.132.0.0/16

ip-masq-agent configmap:

apiVersion: v1
kind: ConfigMap
data:
  config: |
    nonMasqueradeCIDRs:
    - 10.132.0.0/16
    - 10.134.0.0/16
    resyncInterval: 60s
    masqLinkLocal: false
metadata:
  name: ip-masq-agent
  namespace: kube-system

Достижение одной службы кластера из другого кластера напрямую невозможно, для этого можно использовать балансировщик нагрузки.

Ссылка, которая объясняет это, находится в разделе "Собственные кластеры и псевдонимы VPC" в документация где говорится:

«IP-адреса кластера для внутренних служб остаются доступными только внутри кластера. Если вы хотите получить доступ к службе Kubernetes изнутри VPC, но извне кластера (например, из экземпляра Compute Engine), используйте внутренний балансировщик нагрузки. . "

Даже если пример относится к одному и тому же VPC, это также применимо к разным VPC, использующим пиринг VPC (поскольку они считаются "одинаковыми" VPC с некоторыми исключениями, такими как транзитивность:

"Только сети с прямым пирингом могут взаимодействовать. Транзитивный пиринг не поддерживается. Другими словами, если сеть VPC N1 связана с N2 и N3, но N2 и N3 также не подключены напрямую, сеть VPC N2 не может взаимодействовать с сетью VPC N3 через вглядываясь. "