背景:
k8s集群正常运行过程中偶发的出现calico-node节点容器探测异常的问题,出现之后会导致宿主机所在的容器也会相应的出现网络波动,但是都是过一会儿就自动就好了,。
Liveness probe failed: Get http://localhost:9099/liveness: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
故障分析:
分析的时候发现对应的calico-node节点容器是正常的:
[root@master-01 ~]# kubectl describe pods calico-node-mlekb -n kube-system
Name: calico-node-mlekb
Namespace: kube-system
Priority: 2000001000
Priority Class Name: system-node-critical
Node: pro-slave-12/192.20.66.22
Start Time: Wed, 21 Dec 2022 14:57:38 +0800
Labels: component=calico
controller-revision-hash=74c5ff99d4
k8s-app=calico
pod-template-generation=1
Annotations: kubernetes.io/psp: system
Status: Running
.........
同时describe查看的内容只有探测告警的内容:
然后登入倒calico-node容器上去执行curl时也是正常的
但是让专家分析的时候说在calico-node节点容器里访问localhost的时候会走ipv6的网络,并且是失败的情况。经过提醒确实是这样的:
然后去检查calico的ippools的配置:
发现k8s集群的calico只有启用了ipv4的地址池,同时查看calico.yaml文件的configmap有开启ipv6配置:
问题处理:
既然localhost的解析会解析到ipv6的地址上去,那就可以将livenss探针的配置localhost修改为127.0.0.1的地址,然后重启一下calico-node容器就可以了。