【发布时间】:2018-12-25 23:05:22
【问题描述】:
我用一个master和一个node配置了kubernetes集群,运行master和node的机器不在同一个网络中。对于网络,我安装了 calico,所有的 pod 都在运行。为了测试集群,我使用了get shell example,当我从主机运行以下命令时:
kubectl exec -it shell-demo -- /bin/bash
我收到了错误:
Error from server: error dialing backend: dial tcp 10.138.0.2:10250: i/o timeout
ip 10.138.0.2 在节点机器的 eth0 接口上。
我需要进行什么配置才能从 master 访问 pod?
编辑
kubectl 获取所有 --all-namespaces -o 宽输出:
default shell-demo 1/1 Running 0 10s 192.168.4.2 node-1
kube-system calico-node-7wlqw 2/2 Running 0 49m 10.156.0.2 instance-1
kube-system calico-node-lnk6d 2/2 Running 0 35s 10.132.0.2 node-1
kube-system coredns-78fcdf6894-cxgc2 1/1 Running 0 50m 192.168.0.5 instance-1
kube-system coredns-78fcdf6894-gwwjp 1/1 Running 0 50m 192.168.0.4 instance-1
kube-system etcd-instance-1 1/1 Running 0 49m 10.156.0.2 instance-1
kube-system kube-apiserver-instance-1 1/1 Running 0 49m 10.156.0.2 instance-1
kube-system kube-controller-manager-instance-1 1/1 Running 0 49m 10.156.0.2 instance-1
kube-system kube-proxy-b64b5 1/1 Running 0 50m 10.156.0.2 instance-1
kube-system kube-proxy-xxkn4 1/1 Running 0 35s 10.132.0.2 node-1
kube-system kube-scheduler-instance-1 1/1 Running 0 49m 10.156.0.2 instance-1
谢谢!
【问题讨论】:
-
这听起来像是需要修改防火墙规则以允许从您希望使用
exec或logs的任何机器访问端口 10250,因为这两个命令都直接连接到 @节点上的 987654327@ -
所有防火墙规则都被禁用。我尝试从 master 访问 pod。我认为问题在于 kubernetes 试图通过私有 IP“10.138.0.2”访问 pod。
-
显示
kubectl get all --all-namespaces=true命令的输出 -
我在上面加了。谢谢!
-
kubernetes 尝试通过私有 ip "10.138.0.2" 访问 pod,那么您更喜欢它使用什么 IP?只是为了非常清楚:
exec和logs不使用 SDN,它们总是通过“主机”网络传输,因为它们被设计为由您的工作站访问,而不是从集群内部访问。
标签: kubernetes