记录kubectl exec无法进入容器的问题
问题背景
准备使用
kubectl exec -it ngx -- sh进入容器,发现不能进入,报错如下:
服务器配置:ubuntu 使用virtualbox安装,网络配置如下:


也就是双网卡,一张使用NAT,一张使用Host-Only模式
master节点的ip地址是192.168.56.101
node1节点的ip地址是192.168.56.105
使用kubectl get node -owide结果如下:

我发现node1节点的INTERNAL-IP是10.0.2.15,和master节点的ip不在同一个网段,这个ip应该是flannel提供的。这时我觉得只要把node1节点的ip显示成192.168.56.105就好了
解决办法
- master节点修改flannel.yaml配置,文件中加入 --iface=enp0s3,位置如下
containers:
- name: kube-flannel
image: xxx
command:
- /opt/bin/flanneld
args:
- --ip-masq
- --kube-subnet-mgr
- --iface=enp0s3 # 这里新增这条
- 在node节点上执行以下命令:
vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
# 增加这一行
Environment="KUBELET_EXTRA_ARGS=--node-ip=192.168.56.105"
- 重启服务
systemctl daemon-reload
systemctl restart kubelet
- 验证结果

这时已经可以在ctrl服务器上使用kubectl exec 命令进入容器了

写在最后
- 感谢极客时间的同学给出的解决方案,虽然没有彻底解决我的问题,但是提供了思路,因为我这个是双网卡的虚拟机,最好给flannel指定网卡:https://time.geekbang.org/column/article/536829

- 感谢这位网友给出的解决方案:https://yanbin.blog/kubernetes-cluster-internal-ip-issue/#more-10102

评论
其他文章
