K8S安装网络插件flannel问题修复(cni plugin not initialized)

本文主要是介绍K8S安装网络插件flannel问题修复(cni plugin not initialized),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 K8S安装网络插件问题修复

 卸载flannel网络步骤:

 #第一步,在master节点删除flannel

 kubectl delete -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
 kubectl delete -f kube-flannel.yml

 #第二步,在node节点清理flannel网络留下的文件

 ifconfig cni0 down
 ip link delete cni0
 ifconfig flannel.1 down
 ip link delete flannel.1
 rm -rf /var/lib/cni/
 rm -f /etc/cni/net.d/*

 注:执行完上面的操作,重启kubelet

 ifconfig cni0 down
 ip link delete cni0

 [root@master ~]# ifconfig vethb22xxxxx down   (只复制@前面的串就行)
 [root@master ~]# ip link delete vethb22xxxxx


[root@master ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 52:54:00:a5:74:7f brd ff:ff:ff:ff:ff:ffaltname enp0s5altname ens5inet 123.12.0.10/24 brd 123.12.0.255 scope global noprefixroute eth0valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group defaultlink/ether 02:42:21:50:e2:be brd ff:ff:ff:ff:ff:ffinet 172.17.0.1/16 brd 172.17.255.255 scope global docker0valid_lft forever preferred_lft forever
19: vethc12d83a@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group defaultlink/ether b6:0c:87:e3:4c:fc brd ff:ff:ff:ff:ff:ff link-netnsid 0
86: vethb22xxxxx@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group defaultlink/ether d6:4b:f8:fb:8f:38 brd ff:ff:ff:ff:ff:ff link-netns cni-c4dc8844-6897-7862-5367-f7ef4b6acc90

 #ip a 命令 看不到cni0的问题

 cni0找不到,是因为本节点上没有运行的pod,在该节点上运行一个pod就出来了

 查看kubelet日志

 journalctl -xefu kubelet

 #异常,error: cni plugin not initialized

 Nov 07 16:12:56 VM-0-5-centos kubelet[2278204]: E1107 16:12:56.747955 2278204 kubelet.go:2855] "Container runtime network not ready" networkReady="NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized"
 kubectl apply -f kube-flannel.yml
 #10-flannel.conflist 这个文件有时候初始化有问题,需要自己补上

 参考:k0s错误cni plugin not initialized 

cat <<EOL > /etc/cni/net.d/10-flannel.conflist 
{"name": "cbr0","cniVersion": "0.3.1","plugins": [{"type": "flannel","delegate": {"hairpinMode": true,"isDefaultGateway": true}},{"type": "portmap","capabilities": {"portMappings": true}}]
}
EOL

 #查看conflist

 cat /etc/cni/net.d/10-flannel.conflist
 ifconfig cni0

 修改containerd的镜像endpoint

 编辑vim /etc/crictl.yaml
 编辑/etc/crictl.yaml文件, 修改, 主要是新版本增加的image-endpoint

 runtime-endpoint: "unix:///run/containerd/containerd.sock"
 image-endpoint: "unix:///run/containerd/containerd.sock"  #与上边runtime-endpoint一致即可
 timeout: 10
 debug: false
 pull-image-on-create: false
 disable-pull-on-run: false

 加载
 systemctl daemon-reload
 systemctl restart kubelet

 crictl image

 配置 containerd cgroup 驱动程序 systemd(所有节点)

 原文链接:Kubernetes 1.24 高可用集群部署

 kubernets 自v 1.24.0 后,就不再使用 docker.shim,替换采用 containerd 作为容器运行时端点。因此需要安装 containerd(在 docker 的基础下安装),上面安装 docker 的时候就自动安装了 containerd 了。这里的 docker 只是作为客户端而已。容器引擎还是 containerd。


 cat /etc/containerd/config.toml | grep -n "SystemdCgroup"
 sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml

 应用所有更改后,重新启动containerd

 systemctl restart containerd

 如果该文件没有,则需要生成一下,并且images也需要修改

 生成 containerd 的默认配置文件

 containerd config default > /etc/containerd/config.toml

 查看 sandbox 的默认镜像仓库在文件中的第几行

 cat /etc/containerd/config.toml | grep -n "sandbox_image"

 使用 vim 编辑器 定位到 sandbox_image,将 仓库地址修改成 registry.aliyuncs.com/google_containers/pause:3.6

 vim /etc/containerd/config.toml
 sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.6"

 重启 containerd 服务

 systemctl daemon-reload
 systemctl restart containerd.service

 #加入节点

 kubeadm join 123.12.0.23:6443 --token nacoen.xxxxxxxxxxx
 --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 #以前加入过,有异常

 error execution phase preflight: [preflight] Some fatal errors occurred:
 [ERROR FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf already exists
 [ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists

 直接删除

 rm -f /etc/kubernetes/kubelet.conf
 rm -f /etc/kubernetes/pki/ca.crt
 将主节点的.kube目录复制过来,再重新加入

 #加入超时


 
 [kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
 [kubelet-check] Initial timeout of 40s passed.

 参考:https://blog.csdn.net/gs80140/article/details/92798027
 swapoff -a    # will turn off the swap
 kubeadm reset
 systemctl daemon-reload
 systemctl restart kubelet
 iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X  # will reset iptables

 重置之后再重新加入

 scp -rP 你的sshd端口号(默认是22) root@123.12.0.23:/root/.kube /root/.kube


 从节点镜像

#kube-flannel.yml也会用到镜像,可根据网络情况调整配置cat kube-flannel.yml |grep image
image: docker.io/flannel/flannel-cni-plugin:v1.2.0
image: docker.io/flannel/flannel:v0.22.3
image: docker.io/flannel/flannel:v0.22.3#从节点的镜像[root@node02 ~]# crictl images
IMAGE                                                TAG                 IMAGE ID            SIZE
docker.io/flannel/flannel-cni-plugin                 v1.2.0            xxxxxxxxxxxxxxx      3.88MB
docker.io/flannel/flannel                            v0.22.3           xxxxxxxxxxxxxxx      27MB
registry.aliyuncs.com/google_containers/kube-proxy   v1.28.2           xxxxxxxxxxxxxxx      24.6MB
registry.aliyuncs.com/google_containers/pause        3.6               xxxxxxxxxxxxxxx      302kB

 重启服务,查看状态

 systemctl restart --now kubelet
 systemctl status kubelet.service --now

 #主节点启动后install-cni-plugin   install-cni 这两个容器貌似启动了一下就退出,估计是为了把kube-flannel等其它容器 拉起来

systemctl restart --now kubeletsystemctl status kubelet.service --now#主节点启动后install-cni-plugin   install-cni 这两个容器貌似启动了一下就退出,估计是为了把kube-flannel等其它容器 拉起来
[root@VM-0-5-centos ~]# crictl ps -a
CONTAINER           IMAGE               CREATED              STATE               NAME                 ATTEMPT        POD ID              POD
xxxxxxxxxxxx      xxxxxxxxxx           35 seconds ago       Running             kube-flannel              0             xxxxxxxxxxx      kube-flannel-ds-swtg5
xxxxxxxxxxxx      xxxxxxxxxx           36 seconds ago       Exited              install-cni               0             xxxxxxxxxxx      kube-flannel-ds-swtg5
xxxxxxxxxxxx      xxxxxxxxxx           36 seconds ago       Exited              install-cni-plugin        0             xxxxxxxxxxx      kube-flannel-ds-swtg5
xxxxxxxxxxxx      xxxxxxxxxx           54 seconds ago       Running             kube-proxy                0             xxxxxxxxxxx      kube-proxy-9rt8f
xxxxxxxxxxxx      xxxxxxxxxx           About a minute ago   Running             kube-controller-manager   1             xxxxxxxxxxx      kube-controller-manager-master01
xxxxxxxxxxxx      xxxxxxxxxx           About a minute ago   Running             kube-scheduler            1             xxxxxxxxxxx      kube-scheduler-master01
xxxxxxxxxxxx      xxxxxxxxxx           About a minute ago   Running             etcd                      1             xxxxxxxxxxx      etcd-master01
xxxxxxxxxxxx      xxxxxxxxxx           About a minute ago   Running             kube-apiserver            1             xxxxxxxxxxx  

 测试创建一个临时pod

 kubectl create deployment testapp --image=nginx -n kube-public
 kubectl describe deployment.apps  -n kube-public
 kubectl describe replicaset.apps  -n kube-public
 kubectl describe pod/testapp-xxxxxxxxxx-2qh9n -n kube-public
 kubectl exec -it pod名 -c 容器名 bash/sh #区别于docker exec只能登入本机的docker
 #如果pod中只有一个容器,则无需-c指定
 kubectl exec -it pod名 -c 容器名 -- 命令 #可以实现不进入容器执行 -- 后的命令
 kubectl exec -it testapp-xxxxxxxxxx-2qh9n  /bin/bash
 

这篇关于K8S安装网络插件flannel问题修复(cni plugin not initialized)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/947573

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

缓存雪崩问题

缓存雪崩是缓存中大量key失效后当高并发到来时导致大量请求到数据库,瞬间耗尽数据库资源,导致数据库无法使用。 解决方案: 1、使用锁进行控制 2、对同一类型信息的key设置不同的过期时间 3、缓存预热 1. 什么是缓存雪崩 缓存雪崩是指在短时间内,大量缓存数据同时失效,导致所有请求直接涌向数据库,瞬间增加数据库的负载压力,可能导致数据库性能下降甚至崩溃。这种情况往往发生在缓存中大量 k