解决k8s master节点上部署calico网络node节点一直NotReady状态的问题
解决k8s master节点上部署calico网络node节点一直NotReady状态的问题
//20230707 最近在学习k8s,跟着书上的步骤搭建k8s集群,其中出了很多的问题,在此记录一下
镜像pull不下来
安装k8s的过程中需要拉取很多的docker镜像,但是docker源仓库k8s.gcr.io在国内有墙,而阿里云的第三方镜像有的时候并不好使,所以需要进行一系列的操作来拉取镜像。在此记录一下该类问题的一般处理流程
- 搜寻网上帖子中其他仓库的镜像,下载下来,然后改tag为k8s.gcr.io仓库即可,注意版本-->自己搭的集群涉及到lank8s.cn这个仓库
- 在诸多仓库pull镜像之后一定要重新tag到一个仓库前缀,然后指定该仓库,博主一般是不指定,使用k8s默认仓库,然后将所有镜像改为默认tag
- 在一台机器上可以pull镜像,并且镜像已经在本地了,但是另一台pull不下来,那么可以在有镜像的机器上将image打包成tar文件然后scp到指定节点,然后使用docker load来载入,即可实现pull
排查问题
pod或者node状态显示异常,需要进行一系列的手段来定位问题,在此记录一下基本流程和相关命令
- pod异常-->首先可以使用
kubectl get pod -owide -nkube-system | grep 0/1
来获取所有未正常运行的pod,然后使用kubectl describe pod XXX(XXX为pod名)来获取pod运行日志,然后根据报错来定位问题- 博主遇到的是node节点无法加入calico网络的问题,查看pod发现proxy和calico相关的pod都未正常运行,杀掉重启也没用,就开始查看日志,发现第一个无法拉去pause镜像、第二个docker网卡出现问题,然后开始从镜像着手,而proxy pod不运行calico pod也无法运行,所以解决了proxy pod问题之后所有pod都成功运行
- node异常,大同小异,分析不出来的时候就看日志
以上
希望对后来者有所帮助/抱拳