如何通过SSH连接到Google容器引擎集群中的节点?

29

如何通过 SSH 连接到 Google 容器引擎集群的节点?当我尝试使用节点 IP 地址进行 SSH 连接时,它会显示“公钥被拒绝”。

有没有人能帮助我获取连接到 Google 容器引擎集群节点所需的密钥呢?


你能分享更多细节吗?你是如何尝试通过ssh连接的(纯ssh命令,gcloud ssh命令,还是通过GCP WebUI)?同时,请提供输出和错误信息。 - ihor_dvoretskyi
3个回答

56

您应该使用gcloud工具,例如:

gcloud compute ssh <NODE_NAME> --zone <ZONE>

谢谢,我能够做到了 :) 我没有想到节点也是计算引擎。 - Jaikumar Ganesan
3
使用以下命令连接到名为"gke-xxx-default-pool-yyy-3q77"的计算机并运行"ps"命令: $ gcloud compute ssh --zone us-west1-b gke-xxx-default-pool-yyy-3q77 -- ps出现"ssh: connect to host 35.100.100.10 port 22: Connection timed out"错误,表示连接超时。 - Ark-kun
@Ark-kun,您需要编辑集群所在网络的防火墙规则。 - chb

0

我也遇到了同样的问题,在谷歌上搜索了几个小时后,找到了这个解决方法。

添加以下防火墙规则:

目标标签:GKE节点的标签

源IP范围:35.235.240.0/20(Cloud IAP的TCP网络块,请参见https://cloud.google.com/iap/docs/using-tcp-forwarding

端口:22

然后我尝试了下面的命令:

gcloud compute ssh [节点名称] --zone=[区域]


0
kubectl exec -it [POD_NAME] -- /bin/bash

你可以通过以下步骤找到[POD_NAME]的值:
GKE -> 工作负载 -> 点击你的工作负载 -> 管理的Pod -> 名称
[文档1, 文档2]

我尝试按照其他答案中建议的方式通过SSH登录容器,但无论我选择哪个区域,响应始终是"未找到资源 'projects/...'"。因此,我将这个解决方案作为一个替代方案,它允许我检查部署容器上的文件。

更新1:感谢Glen Yu的评论,我成功找到了无法SSH登录我的节点的原因。我使用了Autopilot集群进行部署,它禁止SSH登录:"Autopilot阻止对节点的SSH访问。GKE处理节点的所有运营方面,包括节点健康和运行在节点上的所有Kubernetes组件。"(source)。感谢Glen指出这一点。


问题是关于节点而不是Pods。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接