calico配置报错 kubelet.go:2855] "Container runtime network not ready"
前言
配置 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=DESTINATION,interface=INTERFACE-REGEX。
can-reach=DESTINATION 配置可以理解为 calico 会从部署节点路由中获取到达目的 ip 或者域名的源 ip 地址。
interface=INTERFACE-REGEX 配置可以指定 calico 使用匹配的网卡上的第一个IP地址。列出网卡和IP地址的顺序取决于系统。匹配支持 goalong 的正则语法。
解决方法
修改配置文件 calico.yaml 的 CALICO_IPV4POOL_CIDR、IP_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 之间的数据包路由模式
- IPIP 模式填写: "Always"
- Bgp 模式填写: "Off"
- 跨网段模式填写: "CrossSubnet" (跨网段模式即 IPIP-Bgp 混合模式: 同子网内路由采用 Bgp 模式,跨子网路由采用 IPIP 模式)
IP_AUTODETECTION_METHOD: calico 实例发现节点目标物理网卡的方法
- 不配置 IP_AUTODETECTION_METHOD:默认使用"first-found"寻找节点物理网卡方法,即寻找到第一个网卡设定为节点的目标物理网卡
- "interface=${正则表达式}": 使用正则表达式寻找节点的目标物理网卡
- "can-reach=${DNS 服务器 IP 地址}": 使用 ping 通 DNS 服务器 IP 的方法寻找节点的目标物理网卡
- "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
解决完成!
calico配置报错 kubelet.go:2855] "Container runtime network not ready"的更多相关文章
- 解决eclipse spring配置报错:cvc-elt.1: Cannot find the declaration of element
解决eclipse spring配置报错:cvc-elt.1: Cannot find the declaration of element 'beans'.Referenced file conta ...
- 【GitLab】gitlab上配置webhook后,点击测试报错:Requests to the local network are not allowed
gitlab上配置webhook后,点击测试报错: Requests to the local network are not allowed 操作如下: 报错: 错误原因: gitlab 10.6 ...
- 【Azure App Service】C#下制作的网站,所有网页本地测试运行无误,发布至Azure之后,包含CHART(图表)的网页打开报错,错误消息为 Runtime Error: Server Error in '/' Application
问题描述 C#下制作的网站,所有网页本地测试运行无误,发布至Azure之后,包含CHART(图表)的网页打开报错,错误消息为 Runtime Error: Server Error in '/' Ap ...
- 解决Eclipse 项目报错:Unbound classpath container: ‘JRE System Library [JavaSE-1.7]
MyEclipse出现下面两条报错: The project cannot be built until build path errors are resolved HelloWord Unknow ...
- rsyslog配置报错解决
配置过程中,查看/var/log/meassage 有报错信息: action '*' treated as ':omusrmsg:*' - please use ':omusrmsg:*' synt ...
- 由登录服务器时ulimit配置报错,也谈下ulimit配置
最近在登录开发机时,有报错如下: -bash: cannot modify limit: Operation not permitted 一定是哪个地方有ulimit设置,想想看,用户登录或用户su命 ...
- maven 配置报错 JAVA_HOME not found in your environment
最近比较空,想研究下spring mvc,于是编按照教程一步一步配置开发环境.配置maven完成后,运行命令mvn -v的时候,竟然报错.错误信息如下: Error: JAVA_HOME not fo ...
- webpack配置报错:invalid configuration object.webpack has been initialisted using a configuration objcet that does not match thie API schema
最近接收了别人的项目,webpack配置总是报错如下:最后找到了解决办法,在此分享一下: 错误情况: 解决办法: 将package.json里面的colors删除掉即可
- 【原创】大叔经验分享(52)ClouderaManager修改配置报错
Cloudera Manager中修改配置可能报错: Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column 'MESSAGE ...
- ClouderaManager启动NodeManager失败!报错Failed to initialize container executor
报错信息: 2016-07-27 10:53:14,102 WARN org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor: ...
随机推荐
- Qt/C++推流程序自动生成网页远程查看实时视频流(视频文件/视频流/摄像头/桌面转成流媒体rtmp+hls+webrtc)
一.前言说明 推流程序将视频流推送到流媒体服务器后,此时就等待验证拉流播放,一般可以选择ffplay命令行播放或者vlc等播放器打开播放,也可以选择网页直接打开拉流地址播放,一般主流的浏览器都支持网页 ...
- Qt开源作品22-运行时间记录类
一.前言 在早期开发的软件中,尤其是初学者入门者写的软件,软件运行久了,难免遇到意外崩溃的时候,可是大部分的运行设备可能在现场客户那,需要记住每一次从软件启动后到软件意外关闭前的运行时间,需要记录的信 ...
- 在Node.js环境下使用npm命令安装OpenLayers6.4.3时,提示错误“rollbackFailedOptional: verb npm-session”的解决办法
该问题一般情况是因为npm源问题. 更换为淘宝的源: npm config set registry http://registry.npm.taobao.org 使用 npm info expre ...
- java通过apache poi框架读取2007版Excel文件
java系读写excel文件既可以用jxl库,也可以用POI库,但是,jxl库只支持低版本的excel2003,不支持更高版本,无法直接输出*.xlsx文件,只能输出*.xls文件,另外,更新也不频繁 ...
- 记录小程序跳转h5,然后h5涉及下载文件的问题
小程序跳转h5中,可以在小程序增加一个页面使用webView方式嵌套三方小程序,不过需要配置白名单 由于小程序的限制,不能在嵌套的h5中进行文件下载 网上也没有很好的解决方法,解决方法是再跳到小程序带 ...
- Solution -「LOCAL」Minimal DFA
\(\mathscr{Description}\) Private link. 令 \(\Sigma=\{\texttt a,\texttt b\}\),对于所有形式语言 \(L\subset ...
- Golang-文件处理11
http://c.biancheng.net/golang/102/ Go语言自定义数据文件 对一个程序非常普遍的需求包括维护内部数据结构,为数据交换提供导入导出功能,也支持使用外部工具来处理数据.由 ...
- w3cschool-Hadoop 教程
https://www.w3cschool.cn/hadoop/ 铺垫 人产生数据的速度越来越快,机器则更加快,数据的增长速度通常比算法更快,所以需要另外的一种处理数据的方法. 硬盘的容量增加了,但性 ...
- Pycharm:鼠标滚动控制字体大小
Pycharm字体放大的设置 1.File -> setting -> Keymap ->在搜寻框中输入:increase -> Increase Font Size(双击) ...
- 工具推荐 | Xshell全版本解密工具(包括Xshell7)——SharpXDecrypt
声明 本程序仅供个人恢复密码使用! 用户滥用造成的一切后果与作者无关! 使用者请务必遵守当地法律! 本程序不得用于商业用途,仅限学习交流! 请在下载后24小时内删除!如果代码中存在侵权行为,请联系我们 ...