Я изо всех сил пытаюсь сделать сервисы видимыми через одноранговый 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 через вглядываясь. "