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 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 52:54:00:a5:74:7f brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    altname ens5
    inet 123.12.0.10/24 brd 123.12.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:21:50:e2:be brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
19: vethc12d83a@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
    link/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 default
    link/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 kubelet
 systemctl 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
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/583484.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MS17-010---利用“永恒之蓝”漏洞攻击 win7主机

免责声明:本文仅做技术交流与学习.... 目录 一.前置知识 1.何为永恒之蓝&#xff1f; 2.什么是SMB协议&#xff1f; 3.SMB工作原理是什么&#xff1f; 二、实验环境 三、实验步骤 nmap扫描 msf一把梭哈 shell执行命令 远程连接 一&#xff0e; 二&#xff0e; 一.前…

数字化转型新篇章:企业通往智能化的新范式

早在十多年前&#xff0c;一些具有前瞻视野的企业以实现“数字化”为目标启动转型实践。但时至今日&#xff0c;可以说尚无几家企业能够在真正意义上实现“数字化”。 在实现“数字化”的征途上&#xff0c;人们发现&#xff0c;努力愈进&#xff0c;仿佛终点愈远。究其原因&a…

大象机器人开源协作机械臂myCobot 630 全面升级!

1. 开篇概述 在快速发展的机器人技术领域中&#xff0c;Elephant Robotics的myCobot 600已经证明了其在教育、科研和轻工业领域的显著适用性。作为一款具备六自由度的机械臂&#xff0c;myCobot 600以其600mm的工作半径和2kg的末端负载能力&#xff0c;满足了多样化的操作需求。…

VUE的生命周期图和各函数

函数 beforeCreate(){ }, created(){ }, beforeMount(){ }, mounted(){ }, beforeUpdate(){ }, updated(){ }, beforeDestroy(){ }, destroyed(){ } 创建时生命周期图 运行时生命周期图

Java---数据类型与变量

1.字面常量 字面常量就是我们经常所说的常量&#xff0c;常量即在程序运行期间&#xff0c;固定不变的量。且常量是无法改变的&#xff0c;如果我们的代码有改变常量的操作&#xff0c;程序就会报错。 1.1字面常量的分类 字符串常量&#xff0c;整型常量&#xff0c;浮点数常…

XMind轮播图banner测试点

banner测试点 显示1到5张banner图片 [1,5] 6 1 一张不轮播 5 3 0可选 自动轮播,3秒切换一张 鼠标悬停,不轮播 实心为当前图 点击可以跳转 点击左,切换一张图片 点击右, 切换一张图片…

使用MATLAB/Simulink的PID控制系统设计和自动调整

书籍&#xff1a;Pid Control System Design and Automatic Tuning Using Matlab/Simulink 作者&#xff1a;Liuping Wang 出版&#xff1a;Wiley-IEEE Press 书籍下载-《使用MATLAB/Simulink的PID控制系统设计和自动调整》本书涵盖了具有操作约束的PID控制系统的设计、实施…

Android使用ProtoBuf 适配 gradle7.5 gradle8.0

ProtoBuf 适配 Gradle7.5 gradle-wrapper.properties 配置 distributionUrlhttps\://services.gradle.org/distributions/gradle-7.5-bin.zipProject&#xff1a;build.gradle: plugins {id com.android.application version 7.4.2 apply falseid com.android.library versio…

模拟 枚举 贪心(C++ 题目 代码 注解)

目录 题目一&#xff1a; 题目描述 输入描述: 输出描述: 输入 输出 说明 代码&#xff1a; 题目二&#xff1a; 题目描述 输入描述: 输出描述: 输入 输出 代码&#xff1a; 题目三&#xff1a; 题目描述 输入描述: 输出描述: 输入 输出 输入 输出 输入…

C语言函数指针的使用、函数指针数组及使用、指向函数指针数组的指针,指针进阶版的冒泡排序等介绍

文章目录 前言一、函数指针的使用1. 加减乘除计算器普通实现2. 加减乘除计算机函数指针实现 二、函数指针数组1. 函数指针数组的书写2. 两个有趣的代码3. 函数指针数组的使用 三、指向函数指针数组的指针四、指针进阶_冒泡排序1.整型冒泡排序2. C语言qsort函数3. 仿写C语言qsor…

笔试刷题-Day11

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 一、游游的水果大礼包 题目链接&#xff1a;https://ac.nowcoder.com/acm/problem/255193 类型&#xff1a;求一个表达式的最值&#xff08;并不是贪心,因为该题条件太少&…

PC 自动化测试入门 - pywinauto 上篇:初识

文章目录 前言PC 自动化测试 是什么&#xff1f;常用 PC 自动化测试工具pywinauto 是什么&#xff1f;Windows上支持的可访问性技术列表 操作记事本自动写入问题app Application(backend"uia").start("notepad.exe") 无法正常启动组件选择器和 print_cont…

clickhouse学习笔记05

ClickHouseSpringBoot2.XMybatisPlus整合搭建 添加需要的依赖&#xff1a; 添加clickhouse依赖&#xff1a; 配置数据库配置&#xff1a; 我们框架就搭建完了。 ClickHouse的项目案例统计需求讲解 ClickHouse的项目案例统计库表和数据准备 添加数据&#xff1a; 数据都插入进来…

算法必备数学基础:图论方法由浅入深实践与应用

作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 欢迎加入社区&#xff1a;码上找工作 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 python数据分析…

python 入门第三天(高级进阶:str、set、dict、slice、推导式、高级变量类型的公共语法)

一、字符串str 字符串就是一串字符&#xff0c;是编程语言中表示文本的数据类型 1. 字符串定义 Python中可以使用一对双引号或者一对单引号定义字符串 str1 hello str2 "hello" 2. 获取字符串中元素 和列表一样&#xff0c;字符串也是通过索引获取元素 str …

CentOS7上安装部署Consul服务(小白版)

文章目录 1.Consul服务介绍2.Consul服务下载安装3.Consul服务配置3.1.创建Consul服务的运行用户3.2.下载服务配置生成脚本3.3.配置执行脚本需要的临时变量3.4.生成配置文件3.5.启动测试3.6.开机自启配置 1.Consul服务介绍 Consul 是一种开源的服务网格解决方案&#xff0c;由 …

pytorch库 01 安装Anaconda、Jupyter,Anaconda虚拟环境连接pycharm

文章目录 一、安装Anaconda1、卸载Anaconda&#xff08;可选&#xff09;2、下载并安装Anaconda3、配置环境变量4、桌面快捷方式 二、安装 PyTorch&#xff08;GPU 版&#xff09;库1、创建虚拟环境&#xff0c;并安装一些常用包2、GPU 基础3、检查驱动4、安装CUDA&#xff08;…

Linux搭建局域网私有yum仓库/配置本地光盘镜像仓库/搭建公有yum仓库--7700字详谈

帮助与补全功能 1.补全 yum &#xff08;options&#xff09;COMMAND check check-update clean deplist downgrade erase fs fssnapshot groups help history info install list makecache provides reinstall repo-pkgs repolist search shell swap update update-minimal …

每周一算法:单源次短路

题目描述 “您的个人假期”旅行社组织了一次比荷卢经济联盟的巴士之旅。 比荷卢经济联盟有很多公交线路。每天公共汽车都会从一座城市开往另一座城市。沿途汽车可能会在一些城市&#xff08;零或更多&#xff09;停靠。 旅行社计划旅途从 S S S 城市出发&#xff0c;到 F …

新书速览|ChatGLM3大模型本地化部署、应用开发与微调

实战文本生成、智能问答、信息抽取、财务预警应用开发&#xff0c;掌握ChatGLM3大模型部署、开发与微调技术 01 本书内容 《ChatGLM3大模型本地化部署、应用开发与微调》作为《PyTorch 2.0深度学习从零开始学》的姊妹篇&#xff0c;专注于大模型的本地化部署、应用开发以及微…
最新文章