Google Cloud VPC Псевдоним IP-маршрутизации между зонами

У меня есть мульти-кластерная / многозонная платформа k8s, работающая на Google Kubernetes Engine. Базовая сеть GCP VPC работает в режиме глобальной маршрутизации. Сервисам k8s назначены внутренние IP-адреса (clusterIP) через подсети псевдонимов IP.

Я могу пинговать узлы от одного кластера к другому, чтобы не было проблем с правилами брандмауэра или маршрутизацией в целом, но я не могу подключиться к отдельным службам на их внутренних IP-адресах с псевдонимами в кластерах.

Я могу подключаться к службам из других узлов и контейнеров в том же кластере, хотя если я создаю экземпляр вне кластера k8s в той же зоне, я не могу подключиться.

Похоже, что диапазоны IP-адресов псевдонимов не соответствуют маршрутизируется, даже если подсети отображаются в таблице маршрутизации VPC.

Есть ли способ гарантировать, что все подсети псевдонимов IP правильно маршрутизируются по всему VPC?

Некоторые детали ...

kubectl get services --namespace production
NAME                               TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)                         AGE
elasticsearch                      LoadBalancer   10.0.64.103   xxx.xxx.xxx.xxx   9200:30182/TCP,9300:31166/TCP   1m

gcloud compute routes list
NAME                            NETWORK  DEST_RANGE     NEXT_HOP                  PRIORITY
default-route-ac89edf7c623eb22  foo      10.0.64.0/19   foo                       1000

IP-адрес кластера находится в указан диапазон подсети, но недоступен за пределами локального кластера k8s.

1
задан 19 September 2018 в 12:05
1 ответ

Это ожидаемое поведение при существующей настройке. Я считаю, что вы столкнулись с ограничением псевдонимов IP-адресов , которое задокументировано в этой документации GCP на « Создание кластеров с собственным VPC с использованием псевдонимов IP-адресов »:

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

Поэтому вам следует рассмотреть возможность использования Internal Load Balancing , чтобы иметь доступ к службам извне, которые работают внутри кластера.

1
ответ дан 3 December 2019 в 23:12

Теги

Похожие вопросы