Аннотации глобального доступа (бета) внутреннего балансировщика нагрузки GCP не работают?

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

networking.gke.io/internal-load-balancer-allow-global-access: "true"

Вот полный манифест:

apiVersion: v1
kind: Service
metadata:
  name: ilb-global
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
    networking.gke.io/internal-load-balancer-allow-global-access: "true"
  labels:
    app: hello
spec:
  type: LoadBalancer
  selector:
    app: hello
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP

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

Однако в соответствии с этой документацией я выполнил следующую команду для созданного правила переадресации (GCP создает правило пересылки со случайным именем для всех балансировщиков нагрузки, которые можно получить с помощьюgcloud compute forwarding-rules list command) для обновления глобального доступа:

gcloud beta compute forwarding-rules update abcrandomnamehehe --region [REGION-NAME] --allow-global-access

После выполнения указанной выше команды и обновления балансировщика нагрузки вручную конечная точка становится доступной из всех регионов. Это ручной шаг запускаgcloud команда необходима?

Если да, то в чем тогда смысл аннотации? Я также использую аннотацию с последней доступной версией GKE (1.15.4-gke.22), но не работает без обновления с помощьюgcloudкоманда. Что-то мне не хватает или это ошибка в GCP?

РЕДАКТИРОВАТЬ: Я также открыл эту проблему с GCP, которая была решена довольно быстро, и они обновили общедоступную документацию (15 января 2020 г.), чтобы конкретно упомянуть требование GKE 1.16 для работы функции глобального доступа.

1 ответ

Решение

Это ожидаемо, но причина такого поведения вообще не объясняется в общедоступной документации. Фактически, функция "Глобальный доступ" работает с кластерами GKE 1.16.

Пока что я могу поделиться с вами следующими пунктами:

  • В отношении глобального доступа есть 2 различные функции: 1 для ILB и 1 специально для GKE.
  • Функция глобального доступа для GKE была запущена 23 декабря.
  • Функция глобального доступа для GKE работает с GKE 1.16, но, похоже, не упоминается в документации.
  • Наши тесты проводились с кластером GKE 1.13.11-gke.14.
  • Необходимо создать кластер GKE 1.16 и снова его протестировать.

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

Как вы можете проверить предоставленную выше информацию? Вот краткий процесс, которому вы можете следовать:

ТЕСТ 1:

  • Создайте кластер GKE 1.16 в европе-западе4 (этот регион / зона не является обязательным).
  • Создать развертывание.
  • Создайте внутренний балансировщик нагрузки TCP с аннотацией "network.gke.io/internal-load-balancer-allow-global-access: "true", написав файл конфигурации службы.
  • Перейдите в Сетевые службы> Балансировка нагрузки> Расширенное меню (внизу) >: глобальный доступ должен быть включен.
  • SSH VM в европе-западе 1.
  • Выполните команду $curl -v: вы должны получить HTTP/1.1 200 OK.

ТЕСТ 2:

  • Удалите аннотацию "network.gke.io/internal-load-balancer-allow-global-access: "true"в файле конфигурации службы.
  • Обновите мою службу, выполнив команду $kubectl apply -f
  • Перейдите в Сетевые службы> Балансировка нагрузки> Расширенное меню (внизу) >: глобальный доступ должен быть отключен.
  • SSH VM в европе-западе 1.
  • Выполните команду $curl -v: вы должны получить сообщение об ошибке тайм-аута.