编辑:在您投反对票之前,请评论您为什么投反对票。下次我可以改善,谢谢。
我试图从kubernetes的pod切换到GCE中的另一个VM,主要是因为我想在这两个之间使用rsync。目前,我先使用gcloud compute scp
将文件复制到本地计算机,然后再使用kubectl cp
。
我使用kubectl exec
访问pod,并用ssh-keygen
设置ssh,然后将rsa_id.pub复制到指定的VM到/home/user/.ssh/,但是当我尝试{{1} }它只是说错误连接超时。
我尝试在pod内安装gcloud并能够使用ssh -v user@ip
,也尝试了gcloud compute ssh
,结果是相同的。
当我用自己的电脑SSH时,它可以正常工作
我认为防火墙或网络配置导致了此问题,但我不确定如何解决它。我应该使用k8s服务LoadBalancer公开ssh端口还是应该在VPC网络中编辑防火墙规则?
答案 0 :(得分:0)
从Kubernetes 1.9.x版开始,自动防火墙规则已更改,以使Kubernetes Engine群集中的工作负载无法与位于同一网络但位于群集外部的其他Compute Engine VM进行通信。出于安全原因进行了此更改。
您可以找到解决方案HERE
首先,找到您群集的网络:
gcloud container clusters describe [CLUSTER_NAME] --format=get"(network)"
然后获取用于容器的集群的IPv4 CIDR:
gcloud container clusters describe [CLUSTER_NAME] --format=get"(clusterIpv4Cidr)"
最后以CIDR作为源范围,为网络创建防火墙规则,并允许所有协议:
gcloud compute firewall-rules create "[CLUSTER_NAME]-to-all-vms-on-network" --network="[NETWORK]" --source-ranges="[CLUSTER_IPV4_CIDR]" --allow=tcp,udp,icmp,esp,ah,sctp