Внутренний балансировщик нагрузки GCP Глобальная аннотация доступа (бета) не работает? - PullRequest
4 голосов
/ 10 января 2020

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

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

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

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

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

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

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

EDIT : я также открыл эту проблему с GCP, которая была довольно быстро, и они обновили опубликованную документацию c (15 января 2020 г.), чтобы особо упомянуть требование GKE 1.16 для работы функции глобального доступа.

1 Ответ

5 голосов
/ 10 января 2020

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

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

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

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

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

ТЕСТ 1:

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

ТЕСТ 2:

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