早上好!
我最近一直在玩 GKE Connect,我一直在尝试在 GCP 和 AWS VM 上注册我的">远程"kops 生成的集群,以便我可以在 GCP 控制台上监控它们。
如果您还没有阅读有关GKE Connect的信息,则可以在此处找到官方文档。
现在的问题是,在遵循多个教程并尝试了所有内容后,GKE Connect 代理似乎在我的 k8s 集群上正常运行,但它们从未在我的 GCP 控制台中显示为远程集群 - 您可以找到有关我在此存储库上采取的步骤的指导。
基本上我采取的步骤如下:
- 启用所需的 GCP API
- 为目标集群创建服务帐户
- 将gkehub.connect角色分配给创建的 SA
- 生成 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 请求似乎需要很长时间 - GCP 的 API 控制台显示平均 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研讨会。还发现了这些Codelabs,它们基本上是来讲述同样的故事的。
他们似乎声称集群注册需要列入白名单的服务帐户,但他们从未真正说明">白名单"过程是什么样的。
查看 GKE Connect 脚本,这个脚本几乎完成了我自己正在做的事情:创建服务帐户,提供所需的权限,注册我的集群并生成一个 KSA,我可以使用其密钥在 GCP 控制台访问集群。
现在有关于白名单过程的粗略线条,这可能是解决此问题的关键,但我很惊讶我无法找到对所述过程的任何引用。
GoogleCloud 的 Anthos 需要付费订阅才能使用。您正在审阅的文档适用于现有订阅。要尝试或购买 Anthos,您需要联系销售人员。这些链接位于Anthos主页上,https://cloud.google.com/anthos/