k8s部署成功后结点一直处于NotReady状态解决方案

起因在csdn上看了一直整天都没看到一个能解决我问题的方法,哪怕是我一个问题解决了,另一个报错又起来了,头疼的问题,折磨了一天,在不断查阅资料学习当中,终于解决了这个问题

结论:原因是服务器的/opt/cni/bin/目录中没有flannel插件

先看下报错

journalctl -f -u kubelet.service

6月 21 20:17:49 master kubelet[5841]: : [failed to find plugin "flannel" in path [/opt/cni/bin]]
6月 21 20:17:49 master kubelet[5841]: W0621 20:17:49.563530    5841 cni.go:237] Unable to update cni config: no valid networks found in /etc/cni/net.d
6月 21 20:17:54 master kubelet[5841]: E0621 20:17:54.223793    5841 kubelet.go:2183] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is no
6月 21 20:17:54 master kubelet[5841]: W0621 20:17:54.564025    5841 cni.go:202] Error validating CNI config list 

去github找到插件:Release CNI plugins v0.8.6 · containernetworking/plugins (github.com)

wget https://github.com/containernetworking/plugins/releases/download/v0.8.6/cni-plugins-linux-amd64-v0.8.6.tgz

下载好后上传到服务器然后解压

tar -xvf cni-plugins-linux-amd64-v0.8.6.tgz

 

将其复制到目录/opt/cni/bin/下

mv flannel /opt/cni/bin/

 重新运行

kubectl apply -f kube-flannel.yml

其他节点大致也是这个问题:
1.但是过程当中可能某个节点会有陆陆续续很多的问题,
如果这个节点上有资源:先驱逐这个node节点上的pod

kubectl drain node1(节点名) --delete-local-data --force --ignore-daemonsets

 2.删除这个node1节点

kubectl delete nodes node01

 3.然后在node1这个节点上执行如下命令:

kubeadm reset
//重置Kubernetes集群的状态,包括删除所有的节点和清除所有的配置

systemctl stop kubelet
//停止kubelet服务

rm -rf /var/lib/cni/
//删除CNI插件的配置和状态信息

rm -rf /var/lib/kubelet/*
//删除kubelet的配置和状态信息

rm -rf /etc/cni/
//删除CNI插件的配置和状态信息

ifconfig cni0 down
//关闭cni0网络接口

ifconfig flannel.1 down
//关闭flannel.1网络接口

ifconfig docker0 down
//关闭docker0网络接口

ip link delete cni0
//删除cni0网络接口

ip link delete flannel.1
//删除flannel.1网络接口

systemctl start docker
//启动docker服务

systemctl start kubelet
//启动kubelet服务

 如果不做上面的操作的话会导致这个节点上的pod无法启动,具体报错信息为:networkPlugin cni failed to set up pod "alertmanager-main-1_monitoring" network: failed to set bridge ad has an IP address different from 10.244.5.1/24 ,意思是已经集群网络cni已经有一个不同于10.244.51.1/24 的网络地址,所以需要执行上述命令重置节点网络。

4.重新加入这个node节点
由于默认token的有效期为24小时,当过期之后,该token就不可用了,解决方法如下: 

1.查看当前的token列表
  kubeadm token list
2.重新生成新的token
 kubeadm token create
3.再次查看当前的token列表
 kubeadm token list
4.获取ca证书sha256编码hash值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
5.节点加入集群
k8s-master令牌:
kubeadm join 192.168.146.10:6443 --token 6ovaxh.fjhcp58ti080lo3q     --discovery-token-ca-cert-hash sha256:7549f78b40b034fe5cc03b109695f4306d1abbe92a670bafdbd8b7e60a7e1053

令牌组成形式为:
kubeadm join master节点IP:6443 --token token值 ----discovery-token-ca-cert-hash ca证书sha256编码hash值

token值: 6ovaxh.fjhcp58ti080lo3q 

ca证书sha256编码hash值: 7549f78b40b034fe5cc03b109695f4306d1abbe92a670bafdbd8b7e60a7e1053

加入节点后需要到master节点上在执行次kube-flannel.yml文件

kubeclt apply -f kube-flannel.yml
//用于部署和配置Flannel网络插件


//没有kube-flannel.yml的话可以用下面命令去github上拉取
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

 重新部署flannel插件后获取以下node节点信息

kubectl get nodes

已经全部Ready,准备就绪~~ 

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ks node 处于 NotReady 状态通常表示该节点无法正常工作,无法接受新的Pod调。这可能是由于节点的网络连接问题资源不足、kubelet未正确运行、容器运行时问题等引起的。要解决此问题,可以尝试以下步骤1. 检查节点的网络连接:确保节点能够与群中的其他节点和控制平面进行通信。可以使用 ping 命令或其他网络工具进行测试。 2. 检查节点资源:确保节点具有足够的资源(CPU、内存、磁盘)来运行Pod。可以使用 kubectl describe node <node-name> 命令查看节点资源信息。 3. 检查 kubelet 运行状态:通过运行 systemctl status kubelet 命令(在使用 systemd 的系统上)或 service kubelet status 命令(在使用 init.d 的系统上)来检查 kubelet 服务是否正常运行。如果 kubelet 未运行,请尝试启动它。 4. 检查容器运行时:如果节点上使用的是 Docker 运行时,请确保 Docker 服务正常运行。可以通过运行 systemctl status docker 命令来检查 Docker 服务状态。如果出现问题,可以尝试重启 Docker 服务。 5. 检查容器运行时配置:某些情况下,容器运行时的配置可能有问题,导致节点处于 NotReady 状态。请检查容器运行时的配置文件,并确保其正确设置。 如果以上步骤都没有解决问题,可以查看节点的日志文件(如 kubelet 日志、容器运行时日志)来获取更多详细信息,以帮助进一步排查和解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZHANGZH-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值