k8s部署服务过程中pod状态为ContainerCreating

176 阅读1分钟

在使用k8s主机部署nginx中,出现pod状态为ContainerCreating

image.png

通过执行 kubectl describe pod nginx-6867cdf567-zdfgs,查看日志,发现报错

image.png

大概意思就是 网络失败:networkPlugin cni未能设置pod“nginf867cdf567-zdfgs_default”网络:open/run/franland/subnet.env:没有这样的文件或目录

网上找了很多方法,最终是在节点机器中,添加subnet.env文件,文件内容为:

FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true

image.png

重新部署后,发现还是不能正常运行,状态为无法拉取镜像

image.png

image.png

这次报的错连接超时问题,修改dns配置文件,vim /etc/resolv.conf

image.png

重新部署服务,发现还是有问题

image.png

把dns配置改回原来配置,发现node节点机原来的dns配置是233.5.5.5,应该是223.5.5.5,后来又发现了一个不同的地方,就是/run/flannel/subnet.env下的FLANNEL_SUBNET值不一致

image.png

image.png

试试改为一致,看看能不能行,这时候想起来node节点机器是我手动添加的flannel文件,导进去的时候没看里面的配置

image.png

image.png

这时候pod就是运行状态了

image.png

image.png

总结:

使用k8s部署服务后,发现pod状态为ContainerCreating,通过kubectl describe pod pod名查看日志,发现缺少了subnet.env文件;添加subnet.env文件后提示连接超时,后发现是node节点机/etc/resolv.conf中的dns配置写错写成233.5.5.5,应该是223.5.5.5,之后修改/etc/resolv.conf文件,提示网络IP地址不同于10.244.1.1/24,最后发现是node节点机的subnet.env文件和主机的subnet.env不一致导致的,修改后pod就自动改为running状态了