zoukankan      html  css  js  c++  java
  • 安装 Flannel 报错:network plugin is not ready: cni config uninitialized

    本次部署 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方式(亲测)


    作者:神奇二进制
    文章出处:https://www.cnblogs.com/l-hh/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
    文章如有叙述不当的地方,欢迎指正。如果觉得文章对你有帮助,可以精神上的支持 [推荐] 或者 [关注我] ,一起交流,共同进步!

  • 相关阅读:
    Python 实现扫码二维码登录
    深入理解Python生成器(Generator)
    EasyUI DataGrid 结合Java 各种技巧大综合,你值得拥有。
    C#中读取XML错误解决: System.Xml.XmlException: “Element”是无效的 XmlNodeType。
    CSS3学习系列
    关于java中文乱码问题,我有话要说。
    表格的相关操作
    动态生成列
    开发随笔
    在ASP页面进行参数化 使用access数据库
  • 原文地址:https://www.cnblogs.com/l-hh/p/14989850.html
Copyright © 2011-2022 走看看