不在minikube环境里执行kubectl exec,用vagrant 环境报错

来源:10-4 k8s调度的最小单位pod(下)

weixin_慕瓜7378631

2019-12-29

具体错误如下:
error:unable to upgrade connection: pod does not exist
但是kubectl get pods都有看到这个nginx-busybox

写回答

2回答

麦兜搞IT

2019-12-29

您把get pods的输出,以及您kubectl exec的命令执行全部贴出来我看一下

0
2
weixin_慕瓜7378631
非常感谢!
2019-12-29
共2条回复

weixin_慕瓜7378631

提问者

2019-12-29

找到原因了。

Vagrant 在多主机模式时每个主机的 eth0 网口 ip 都是 10.0.2.15,这个网口是所有主机访问公网的出口,用于 nat 转发。而 eth1才是主机真正的 IP。kubelet 在启动时默认读取的是 eth0 网卡的 IP,因此在集群部署完后 kubect get node -o wide 查看到节点的 IP 都是 10.0.2.15。

k8s 节点 IP 获取不对导致访问节点出现问题,那么解决方法就是调整 kubelet 参数设置正确的
IP 地址:
编辑 /etc/sysconfig/kubelet 文件,KUBELET_EXTRA_ARGS 环境变量添加 --node-ip 参数:
KUBELET_EXTRA_ARGS="--node-ip=<eth1 网口 IP>"
kubelet:systemctl restart kubelet
执行 kubectl get node -o wide 发现节点 IP 已经改变
-------------------------------------------------------------------------------
故障排除。

3
1
captainf
感谢!!!
2020-04-17
共1条回复

系统学习Docker 践行DevOps理念

无论你是开发、测试还是运维,Docker都是你的必备技能。

3297 学习 · 1895 问题

查看课程