我无法从本地主机到Pod获得Shell

时间:2018-10-17 15:01:02

标签: docker ssh kubernetes centos containers

从Pod到本地主机,ssh运作良好。并且ping也可以很好地相互配合。 Pod中有centos7。另外,openssh-server已安装在Pod中。但是总会有错误。

kubectl get pods -o wide

NAME                   READY   STATUS    RESTARTS   AGE   IP             NODE      NOMINATED NODE
hadoop-master-pod      1/1     Running   0          39m   10.244.9.25    slave10   <none>
hadoop-secondary-pod   1/1     Running   0          48m   10.244.11.11   slave12   <none>

ssh 10.244.9.25

ssh: connect to host 10.244.9.25 port 22: Connection refused

2 个答案:

答案 0 :(得分:0)

您应该可以使用kubectl exec -it hadoop-master-pod -- /bin/bash

进行连接

然后,您可以检查您的Pod是否在端口22上监听0.0.0.0

检查iptables是否没有阻塞。

确保openssh正在运行以及在哪个端口上运行。

答案 1 :(得分:0)

10.244.9.25 IP是Kubernetes分配给pod的内部IP地址(您可以阅读有关Kubernetes网络模型here的更多信息),以便在Kubernets集群中使用,因此您将无法进行SSH甚至无法ping通从群集外部访问这些IP。换句话说,包含10.244.9.25的网络就像是K8群集中的专用网络,而您的主机(本地主机)位于不同的网络上。

例如,如果您想进入此处的容器,则可以根据容器中安装的外壳使用kubectl exec -it hadoop-master-pod -- /bin/bash/bin/sh,并且可以执行通过SSH尝试执行的任何操作吊舱。

如果您真的想从本地主机(集群外部)SSH到Pod中,则可以编写一个Kubernetes服务,该服务可能在NodePort上公开,它将通过NodePort将22(SSH的默认端口)暴露给外部。