我正在使用kops在GCloud上部署一个2节点的Kubernetes集群,命令如下:
kops create cluster part1.k8s.local --zones europe-west3-a --node-count 2 --node-image ubuntu-os-cloud/ubuntu-2004-focal-v20210129 --node-size "e2-standard-2" --ssh-public-key ~/.ssh/id_rsa.pub --state ${KOPS_STATE_STORE}/ --project=${PROJECT}
kops update cluster --name part1.k8s.local --yes --admin
然后等待集群准备就绪,并使用以下命令获取其中一个节点的外部IP:
kubectl get nodes -o wide
然而,当我试图登录到节点时,我得到:
ssh -i ~/.ssh/id_rsa admin@<PUBLIC_IP>
admin@<PUBLIC_IP>: Permission denied (publickey).
检查权限节点应该能够接受SSH连接,我可以使用GCloud UI连接到虚拟机。
我做错了什么?谢谢!
答案可以在这里找到:https://github.com/kubernetes/kops/issues/10770
我在测试SSH keys
的一些场景(添加,删除,覆盖等)时遇到了这个问题。
当您登录到GKE
控制台时,您的ssh keys
存储在~/.ssh
中。如果文件夹为空,这些密钥将在您连接到VM (google_compute_engine和google_compute_engine.pub)时创建。
$ ls ~/.ssh
google_compute_engine google_compute_engine.pub google_compute_known_hosts known_hosts
关于SSH Key
的信息也存储在项目中。你可以在导航菜单中找到它比;计算引擎比;. 下一步选择SSH Keys选项卡查看实例SSH keys
。
关于SSH Keys
的更多信息可以在元数据指南中的管理SSH密钥中找到。
如果你遇到这种问题,你可以从UI中删除SSH key
,删除google_compute_engine
和google_compute_engine.pub
。当你想要SSH
到机器时,GKE会要求你创建新的SSH密钥,Permission denied (publickey)
的问题应该会被修复。
用于ssh
到GCE
的命令vm is gcloud ssh
gcloud compute ssh <instance-name> --zone <zone>
为什么?
gcloud compute ssh是ssh(1)命令的一个薄包装器,负责身份验证和将实例名称转换为IP地址。
此外,如果您在GKE
上遇到其他SSH
问题,您可以查看故障排除SSH指南。