k8s

calico报错:Calico CNI panicked during ADD

报错详情

Calico CNI panicked during ADD:runtime error: invalid memory address or nil pointer dereference
file
多次报错后,pod会正常启动。

解决

我的环境是:k8s 1.20.15,calico 3.21.6
参考这篇issue:https://github.com/projectcalico/calico/issues/5779
尝试重启calico-node pod和应用pod,未生效,重启node也未生效。未修改ippool测试。

怀疑是版本bug,升级calico版本到3.22.5,升级教程
https://docs.tigera.io/archive/v3.22/maintenance/kubernetes-upgrade#upgrading-an-installation-that-uses-manifests-and-the-kubernetes-api-datastore

curl https://projectcalico.docs.tigera.io/archive/v3.22/manifests/calico.yaml -O
kubectl apply -f calico.yaml

升级完成后,再次启动pod,没有这个报错了,但是出现了新的报错:出现多次后pod也能正常启动。

(combined from similar events): Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "xxx" network for pod "xxx": networkPlugin cni failed to set up pod "xxx" network: error adding host side routes for interface: caliefdccd95d3d, error: route (Ifindex: 9709, Dst: 10.43.166.169/32, Scope: link) already exists for an interface other than 'caliefdccd95d3d': route (Ifindex: 1214, Dst: 10.43.166.169/32, Scope: link, Iface: calib3187871ec0)

这个报错是calico去分配pod地址的时候发现已经被占用了,就尝试用别的ip,如果还冲突就继续报错,直到分配到正常ip。为什么会冲突呢,因为环境中有的pod ip在IPAM的bolck内,但实际上并未分配。
file

kubectl get ipamblocks.crd.projectcalico.org 10-43-135-0-26 node3
calicoctl ipam show --allow-version-mismatch

解决方法:

使用calicoctl检查异常的ip命令:

calicoctl ipam check  --allow-version-mismatch --show-problem-ips

这里采用了重启node的方式,我这里有100多个异常ip,下面是重启多台node后的。再删除这几个coredns的异常pod即可。

file

calicoctl ipam check返回的problem数字下降到0,所有节点上的pod都可以正常创建。

分类: k8s
0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部
0
希望看到您的想法,请您发表评论x