GKE Connect запускается успешно, но кластер не отображается на консолях GCP
Доброе утро!
В последнее время я экспериментировал с GKE Connect и пытался зарегистрировать кластеры, сгенерированные " удаленными "-kops, на виртуальных машинах GCP и AWS, чтобы я мог отслеживать их на консоли GCP.
Если вы не читали о GKE Connect, вы можете найти официальную документацию здесь.
Теперь проблема в том, что после выполнения нескольких руководств и проверки всего, агент GKE Connect работает правильно на моих кластерах k8s, но они никогда не отображаются в моей консоли GCP как удаленные кластеры - вы можете найти руководство по шагам, которые я Заработал на этом репозитории.
В основном я сделал следующие шаги:
- Включите необходимые API GCP
- Создайте учетную запись службы для целевого кластера
- Назначьте созданной SA роль gkehub.connect.
- Создайте закрытый ключ SA
- Запустите агент, используя следующую команду:
gcloud alpha container hub register-cluster ${CLUSTER_NAME} \
--context=${CLUSTER_NAME} \
--service-account-key-file=/var/lib/jenkins/gke-connect/${SERVICE_ACC}-gke-connect-creds.json \
--project=${CLOUD_PROJECT}
Агент развернут в моем кластере, и журналы контейнера отображаются следующим образом:
2019/12/13 08:57:03.403373 dialer.go:261: dialer: dial: connecting to gkeconnect.googleapis.com:443...
2019/12/13 08:57:03.515452 dialer.go:272: dialer: dial: connected to gkeconnect.googleapis.com:443
2019/12/13 08:57:03.515483 tunnel.go:314: serve: opening egress stream...
2019/12/13 08:57:03.515545 tunnel.go:322: serve: registering project_number="681949624886", connection_id="db3fb4d9-1d7f-11ea-927b-0218619c9f84" connection_class="DEFAULT" agent_version="20191206-03-00" ...
2019/12/13 08:57:03.515592 dialer.go:222: Dial successful, current connections: 3
2019/12/13 08:57:08.515779 tunnel.go:374: serve: serving requests...
Кстати, запросы API, похоже, занимают очень много времени - консоль API GCP отображает в среднем 8 минут времени ответа. Вы, ребята, испытывали что-нибудь подобное?
Спасибо!
Редактировать 1 Добавление дополнительной информации
Не уверен, так ли это должно работать, поскольку это нигде не задокументировано, но агент GKE Connect, похоже, обрабатывает 3 соединителя, которые отключаются через 5-8 минут со следующим шаблоном трассировки:
2019/12/13 11:04:30.519779 dialer.go:277: dialer: dial: connection to gkeconnect.googleapis.com:443 closed after 8m1.174074486s
2019/12/13 11:04:30.519831 dialer.go:204: dialer: connection done: <nil>
2019/12/13 11:04:30.519839 dialer.go:305: dialer: backoff: reset
2019/12/13 11:04:30.519847 dialer.go:236: dialer: dial interval was 5m0.950672921s
2019/12/13 11:04:30.519859 dialer.go:180: dialer: waiting for next event, outstanding connections=2
Редактировать 2 Связь
Подключение к требуемым конечным точкам также кажется нормальным изнутри контейнера, развернутого в моем кластере:
/usr/src/app # ping oauth2.googleapis.com
PING oauth2.googleapis.com (172.217.21.234): 56 data bytes
64 bytes from 172.217.21.234: seq=0 ttl=48 time=1.169 ms
64 bytes from 172.217.21.234: seq=1 ttl=48 time=1.165 ms
--- oauth2.googleapis.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 1.165/1.167/1.169 ms
/usr/src/app # ping gkeconnect.googleapis.com
PING gkeconnect.googleapis.com (172.217.22.42): 56 data bytes
64 bytes from 172.217.22.42: seq=0 ttl=48 time=1.115 ms
64 bytes from 172.217.22.42: seq=1 ttl=48 time=1.201 ms
--- gkeconnect.googleapis.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 1.115/1.158/1.201 ms
/usr/src/app # ping gkehub.googleapis.com
PING gkehub.googleapis.com (216.58.206.10): 56 data bytes
64 bytes from 216.58.206.10: seq=0 ttl=48 time=1.374 ms
64 bytes from 216.58.206.10: seq=1 ttl=48 time=1.428 ms
--- gkehub.googleapis.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 1.374/1.401/1.428 ms
/usr/src/app # ping www.googleapis.com
PING www.googleapis.com (172.217.16.202): 56 data bytes
64 bytes from 172.217.16.202: seq=0 ttl=48 time=1.357 ms
64 bytes from 172.217.16.202: seq=1 ttl=48 time=1.382 ms
--- www.googleapis.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 1.357/1.369/1.382 ms
/usr/src/app # ping accounts.google.com
PING accounts.google.com (172.217.23.141): 56 data bytes
64 bytes from 172.217.23.141: seq=0 ttl=48 time=1.447 ms
64 bytes from 172.217.23.141: seq=1 ttl=48 time=1.400 ms
--- accounts.google.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 1.400/1.423/1.447 ms
/usr/src/app # ping gcr.io
PING gcr.io (173.194.76.82): 56 data bytes
64 bytes from 173.194.76.82: seq=0 ttl=32 time=10.311 ms
64 bytes from 173.194.76.82: seq=1 ttl=32 time=10.386 ms
--- gcr.io ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 10.311/10.348/10.386 ms
Изменить 3 Дальнейшее тестирование
Благодаря Армандо в комментариях я еще раз взглянул на официальный семинар Anthos. Также были обнаружены эти кодовые лаборатории, которые рассказывают одну и ту же историю.
Они, кажется, утверждают, что для регистрации кластера требуется учетная запись службы из белого списка, но они никогда не заявляют, на что похож процесс " белого списка ".
Проверяя сценарии GKE Connect, он делает почти то же самое, что и я: создает учетную запись службы, предоставляет необходимые разрешения, регистрирует мой кластер и генерирует KSA, ключ которого я могу использовать для доступа к кластеру в консоли GCP.
Теперь есть отрывочная линия о процессе внесения в белый список, которая может быть ключом к решению этой проблемы, но я удивлен, что не смог найти никакой ссылки на этот процесс.
1 ответ
Для использования Anthos от Google Cloud требуется платная подписка. Документы, которые вы просматриваете, работают с существующими подписками. Чтобы попробовать или купить Anthos, вам необходимо обратиться в отдел продаж. Ссылки находятся на главной странице Anthos здесь https://cloud.google.com/anthos/