Аннотации глобального доступа (бета) внутреннего балансировщика нагрузки 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: вы должны получить сообщение об ошибке тайм-аута.