安装 Flannel 报错:network plugin is not ready: cni config uninitialized

摘要:
最后查看节点和Pod状态,都已经Running最后总结:此次部署Kubernetes不是最新版本而是1.13.3低版本,主要有两个问题导致flannel网络无法安装成功。

本次部署 Kubernetes 1.13.3 版本,使用 kubeadm 方式进行部署,当部署 Flannel 网络时出现如下报错:

[root@k8s-master01 ~]# journalctl -fu kubelet
7月 09 10:19:56 k8s-master01 kubelet[41802]: W0709 10:19:56.859190   41802 cni.go:203] Unable to update cni config: No networks found in /etc/cni/net.d
7月 09 10:19:56 k8s-master01 kubelet[41802]: E0709 10:19:56.859282   41802 kubelet.go:2192] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
7月 09 10:20:01 k8s-master01 kubelet[41802]: W0709 10:20:01.870056   41802 cni.go:203] Unable to update cni config: No networks found in /etc/cni/net.d
7月 09 10:20:01 k8s-master01 kubelet[41802]: E0709 10:20:01.870357   41802 kubelet.go:2192] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
...

安装 Flannel 命令如下:

[root@k8s-master01 ]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

创建kube-flannel.yml配置文件后,发现并没有拉取 flannel 相关镜像

image-20210709103817205

也没有 flannel 相关的 pod 被创建

image-20210709104041793

通过日志抛出的信息 “network plugin is not ready: cni config uninitialized” 来看,认为是 init coredns 引起的,而不是 init flannel 。

解决方法:

不能直接使用上面的命令来安装 Flannel ,可能是版本问题导致,则使用如下命令来安装 Flannel。

[root@k8s-master01 ~]# kubectl -n kube-system apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml

image-20210709105104040

可以看到 flannelPod 已经被创建了,但是发现 coredns 和 flannel 状态都没成功

image-20210709105149016

接下来重置 coredns pod 试试

image-20210709105331728

发现还是不行,查看 kube-flannel-ds-amd64 日志

[root@k8s-master01 ~]# kubectl -n kube-system logs kube-flannel-ds-amd64-62pl7
Error from server (BadRequest): container "kube-flannel" in pod "kube-flannel-ds-amd64-62pl7" is waitin

查看 kube-flannel-ds-amd64 详细信息

[root@k8s-master01 ~]# kubectl describe pod kube-flannel-ds-amd64-62pl7 -n kube-system
....
Events:
  Type    Reason     Age    From                   Message
  ----    ------     ----   ----                   -------
  Normal  Scheduled  3m32s  default-scheduler      Successfully assigned kube-system/kube-flannel-ds-amd64-62pl7 to k8s-master01
  Normal  Pulling    3m30s  kubelet, k8s-master01  pulling image "quay.io/coreos/flannel:v0.10.0-amd64"
  Normal  Pulled     29s    kubelet, k8s-master01  Successfully pulled image "quay.io/coreos/flannel:v0.10.0-amd64"
  Normal  Created    29s    kubelet, k8s-master01  Created container
  Normal  Started    28s    kubelet, k8s-master01  Started container
  Normal  Pulled     27s    kubelet, k8s-master01  Container image "quay.io/coreos/flannel:v0.10.0-amd64" already present on machine
  Normal  Created    27s    kubelet, k8s-master01  Created container
  Normal  Started    27s    kubelet, k8s-master01  Started container

参考了这个博客说要关闭 Swap 的限制,链接:https://blog.csdn.net/wzygis/article/details/91366441

具体配置添加如下:

[root@k8s-master01 ~]# cat /etc/sysconfig/kubelet 
KUBELET_EXTRA_ARGS="--fail-swap-on=false"

但是我之前部署的 1.21.1 版本没有添加这个配置信息也是没问题的,可能是版本问题导致的。

image-20210709110626962

最后查看节点和 Pod 状态,都已经 Running

image-20210709111745730

最后总结:

此次部署 Kubernetes 不是最新版本而是 1.13.3 低版本,主要有两个问题导致 flannel 网络无法安装成功。

第一,由于版本原因,我直接使用之前部署的 Flannel YAML 链接来部署,导致最新的 Flannel 版本不匹配 1.13.3 版本的 K8s,所以创建的时候是显示成功的,但是相关的 Pod 和镜像都没有创建。

第二、使用匹配的 Flannel 版本后,由于 kubernetes 1.13.3 KUBELET_EXTRA_ARGS=默认是空的,所以需要添加关闭 Swap 的限制配置。

具体安装步骤可以参考【二】Kubernetes 集群部署-kubeadm方式(亲测)

免责声明:文章转载自《安装 Flannel 报错:network plugin is not ready: cni config uninitialized》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇计算机CPU之CISC、RISC、x86、IA32、x86-64、IA64、ARMword将编号转成普通文本下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

kubernetes之kubeadm 安装kubernetes 高可用集群

1. 架构信息 系统版本:CentOS 7.6内核:3.10.0-957.el7.x86_64 Kubernetes: v1.14.1Docker-ce: 18.09.5推荐硬件配置:4核8G Keepalived保证apiserever服务器的IP高可用 Haproxy实现apiserver的负载均衡 2. 节点信息 目前测试为 6 台虚拟机,etcd...

gitlabCI/CD部署一个java项目

1、环境准备   1)安装jdk工具 安装yum epel源 [root@k8s-node02 ~]# yum install -y epel-release 安装jdk [root@k8s-node02 ~]# yum install -y java-1.8.0-openjdk 验证jdk [root@k8s-node02 ~]# java -v...

k8s之node主机修改IP

  k8s的node主机修改IP以后配置   原k8s node主机IP为172.16.20.182需要修改成172.16.20.183   查看原node    node主机修改IP以后,修改node的kubele配置文件 # cat /opt/kubernetes/cfg/kubelet # cat /opt/kubernetes/cfg/kubel...

k8s健康检查(七)

默认的健康检查 强大的自愈能力是 Kubernetes 这类容器编排引擎的一个重要特性。自愈的默认实现方式是自动重启发生故障的容器。除此之外,用户还可以利用 Liveness 和 Readiness 探测机制设置更精细的健康检查,进而实现如下需求: 零停机部署。 避免部署无效的镜像。 更加安全的滚动升级。 每个容器启动时都会执行一个进程,此进程由 Do...

k8s中设置探针-存活探针和就绪探针

基础概念 探针 是由 kubelet 对容器执行的定期诊断。 针对运行中的容器,kubelet 可以选择是否执行以下三种探针,以及如何针对探测结果作出反应: livenessProbe:指示容器是否正在运行。如果存活态探测失败,则 kubelet 会杀死容器, 并且容器将根据其重启策略决定未来。如果容器不提供存活探针, 则默认状态为 Success。 r...

从技术角度讨论微服务

微服务的两个程度 一、服务化 复杂的单体架构会有以下的挑战: (1)项目启动初期,需要寻找一个能尽量涵盖所有需求的开发语言,技术选型难度高; (2)工程庞大,组件、中间件繁多,编译时间长;开发环境复杂,需要安装大量的辅助软件,环境准备时间长; (3)团队无效沟通多,沟通成本高; (4)部署环境依赖大,某个组件的问题可能导致整个系统无法运行; (5)新功能添...