首页 > 其他分享 >calico配置报错 kubelet.go:2855] "Container runtime network not ready"

calico配置报错 kubelet.go:2855] "Container runtime network not ready"

时间:2024-04-22 14:14:35浏览次数:19  
标签:node Container 22 IP 网卡 报错 Mon ready 0000

前言

配置 calico 网络插件时,kubectl get node 报错: NoReady

kubectl describe node node

Name:               node
Roles:              <none>
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    kubernetes.io/arch=amd64
                    kubernetes.io/hostname=node
                    kubernetes.io/os=linux
Annotations:        kubeadm.alpha.kubernetes.io/cri-socket: /run/containerd/containerd.sock
                    node.alpha.kubernetes.io/ttl: 0
                    projectcalico.org/IPv4Address: 192.168.58.246/24
                    projectcalico.org/IPv4IPIPTunnelAddr: 10.244.167.128
                    volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp:  Mon, 22 Apr 2024 03:20:16 +0000
Taints:             node.kubernetes.io/not-ready:NoExecute
                    node.kubernetes.io/not-ready:NoSchedule
Unschedulable:      false
Lease:
  HolderIdentity:  node
  AcquireTime:     <unset>
  RenewTime:       Mon, 22 Apr 2024 05:36:58 +0000
Conditions:
  Type                 Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----                 ------  -----------------                 ------------------                ------                       -------
  NetworkUnavailable   False   Mon, 22 Apr 2024 05:35:09 +0000   Mon, 22 Apr 2024 05:35:09 +0000   CalicoIsUp                   Calico is running on this node
  MemoryPressure       False   Mon, 22 Apr 2024 05:33:18 +0000   Mon, 22 Apr 2024 03:20:16 +0000   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure         False   Mon, 22 Apr 2024 05:33:18 +0000   Mon, 22 Apr 2024 03:20:16 +0000   KubeletHasNoDiskPressure     kubelet has no disk pressure
  PIDPressure          False   Mon, 22 Apr 2024 05:33:18 +0000   Mon, 22 Apr 2024 03:20:16 +0000   KubeletHasSufficientPID      kubelet has sufficient PID available
  Ready                False   Mon, 22 Apr 2024 05:33:18 +0000   Mon, 22 Apr 2024 03:20:16 +0000   KubeletNotReady              container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized

故障原因

网络插件的网卡发现机制,修改 IP_AUTODETECTION_METHOD 对应的 value 值。

官方提供的 yaml 文件中, ip 识别策略(IPDETECTMETHOD)没有配置,即默认为 first-found ,这会导致一个网络异常的 ip 作为 nodeIP 被注册,从而影响 node-to-nodemesh

IP_AUTODETECTION_METHOD 配置项默认为 first-found,这种模式中 calico 会使用第一获取到的有效网卡,虽然会排除 docker 网络,localhost,但是在复杂网络环境下还是有出错的可能。在这次异常中 master 上的 calico 选择了一个非主网卡。

为了解决这种情况,IP_AUTODETECTION_METHOD 还提供了两种配置 can-reach=DESTINATIONinterface=INTERFACE-REGEX

can-reach=DESTINATION  配置可以理解为 calico 会从部署节点路由中获取到达目的 ip 或者域名的源 ip 地址。

interface=INTERFACE-REGEX  配置可以指定 calico 使用匹配的网卡上的第一个IP地址。列出网卡和IP地址的顺序取决于系统。匹配支持 goalong 的正则语法。

解决方法

修改配置文件 calico.yamlCALICO_IPV4POOL_CIDRIP_AUTODETECTION_METHOD 配置项

kind: DaemonSet
apiVersion: apps/v1
metadata:
  name: calico-node
  namespace: kube-system
  labels:
    k8s-app: calico-node
spec:
  ...
  containers:
    ...
    env:
      ...
      # - name: CALICO_IPV4POOL_CIDR
      #   value: "192.168.0.0/16"
      ...
      - name: IP_AUTODETECTION_METHOD
        value: "can-reach=${DNS 服务器 IP 地址}"

去掉 CALICO_IPV4POOL_CIDR 注释(注意-要与其他项的-对齐,否则会报错),并配置 value 值,使其与 kubeadm 初始化集群中的 pod_network_cidr 配置项保持一致

增加 IP_AUTODETECTION_METHOD 配置项,value 值后面的网段配置为 DNS 服务器 IP 地址

  • CALICO_IPV4POOL_CIDR: 集群 Pod 的 IP 的 cidr 网段

  • CALICO_IPV4POOL_IPIP: 集群 Pod 之间的数据包路由模式

    1. IPIP 模式填写: "Always"
    2. Bgp 模式填写: "Off"
    3. 跨网段模式填写: "CrossSubnet" (跨网段模式即 IPIP-Bgp 混合模式: 同子网内路由采用 Bgp 模式,跨子网路由采用 IPIP 模式)
  • IP_AUTODETECTION_METHOD: calico 实例发现节点目标物理网卡的方法

    1. 不配置 IP_AUTODETECTION_METHOD:默认使用"first-found"寻找节点物理网卡方法,即寻找到第一个网卡设定为节点的目标物理网卡
    2. "interface=${正则表达式}": 使用正则表达式寻找节点的目标物理网卡
    3. "can-reach=${DNS 服务器 IP 地址}": 使用 ping 通 DNS 服务器 IP 的方法寻找节点的目标物理网卡
    4. "cidr=${物理网卡 IP 所在的 CIDR 网段}": 使用 CIDR 的网段匹配方法寻找节点的目标物理网卡

然后重新执行 kubectl apply -f calico.yaml

kubectl get node
NAME     STATUS   ROLES           AGE     VERSION
master   Ready    control-plane   2d18h   v1.28.2
node     Ready    <none>          137m    v1.28.2

解决完成!

标签:node,Container,22,IP,网卡,报错,Mon,ready,0000
From: https://www.cnblogs.com/niuben/p/18150524

相关文章

  • centos系列报错
    centos系列报错一、网络问题1、报错:ping:www.baidu.com:Nameorservicenotknown(centos8)(1)查看网卡配置:[root@CentOS8Shaowenhuanetwork-scripts]#cat/etc/sysconfig/network-scripts/ifcfg-ens160TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=static......
  • 报错:Qt 打开项目找不到Qt自己的头文件
    报错:Qt打开项目找不到Qt自己的头文件问题描述打开一个之前能跑的Qt项目,发现编译报错,很多Qt自己的宏、头文件、基本类都找不到了。问题解决首先排除一下是不是Qt版本问题导致的CMakeLists.txt或qmake的.pro文件问题。CMakeLists.txt的问题好判断,cmake会给出详细的报......
  • Cadence 启动报错——无法检测到主机名
    软件版本:IC617操作系统:CentOS7*WARNING*clsInitfailed:Can'tdeterminehostname.Lockingisnotallowedwithhostname'localhost'.Checkthehostconfiguration....(略)解决方法sudosuhostnamecentos这里的centos可以改为你想要的hostname参考链接:ce......
  • kubernetes CNI(Container Network Inferface)
    为什么需要CNI在kubernetes中,pod的网络是使用networknamespace隔离的,但是我们有时又需要互相访问网络,这就需要一个网络插件来实现pod之间的网络通信。CNI就是为了解决这个问题而诞生的。CNI是containernetworkinterface的缩写,它是一个规范,定义了容器运行时如何配......
  • com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed at S
     适用的druid数据库连接池一直有问题,无法连接,但是什么都没改过。排查了数据库(数据库单独连接没问题)、防火墙、IP白名单等步骤后,重启服务器、重启应用后都无法解决。重启应用过程中发现了应用无法正常启动的情况,这点让人觉得很意外,于是想看下现在服务器上运行的jar包情况,命令是......
  • Nginx make报错处理
    https://blog.csdn.net/zhengdong12345/article/details/130669711  make报错:fatalerror:sys/sysctl.h:Nosuchfileordirectory执行make操作,报出fatalerror:sys/sysctl.h:Nosuchfileordirectory 问题处理这个报错的主要原因是随着glibc2.32的发布,Linux系统......
  • python多继承构造方法参数报错
    各路大神,今天下午在学习Python3.12多继承的时候,有个构造方法一直报错,希望大家能帮忙瞅瞅,求求了~~~~~~~代码如下:点击查看代码classRectangle:def__init__(self,width,height):self.width=widthself.height=heightdefarea(self):......
  • 安装iptables报错
    安装ittables报错:apt-getinstalliptablesReadingpackagelists...DoneBuildingdependencytreeReadingstateinformation...DoneSomepackagescouldnotbeinstalled.Thismaymeanthatyouhaverequestedanimpossiblesituationorifyouareusingtheuns......
  • cenots7.6系统报“fork:Cannot allocate memory” 报错的解决方法(实操)
    今日早晨上班上报一台虚拟机无法ssh连接,想着大抵是关机了,又或是存储满了(经常遇到这样的事情,因为基本上都是做的厚置备,所以会导致分配容量大于实际容量)。打开后台查看报警事件,没有!预感到此事不大简单。。。。进入控制台,输入w好家伙,输出fork:Cannotallocatememory翻译一下:内......
  • DbMigrator迁移数据库报错:The ConnectionString property has not been initialized.
    问题执行.DbMigrator时报错:TheConnectionStringpropertyhasnotbeeninitialized.原因情况一DbContext中没有指定连接字符串解决方案情况二appsettings.json配置文件的属性没有设置为始终复制解决方案右键appsettings.json选择属性>复制到输出目录选择始终复制或......