环境:VM虚拟机安装的k8s master| node1| node2
虚拟机网络模式:桥接网络
在master上执行一个busybox测试DNS解析
[root@holymaster1 ~]kubectl run busybox --image busybox:1.28 --image-pull-policy=IfNotPresent --restart=Never --rm -it busybox -- sh
结果爆出的是无法解析,那就是CoreDNS有问题l
从calico入手查问题
kubectl get pods -n kube-system -o wide
kubectl get pods -o wide
分别执行以上两个命令,得到如下结果
根据结果来看,busybox 的pod是被分配在了holynode2这台节点上,发现holynode2节点对应的calico-node-77vsk 节点没有正常启动,报的是0/1
那就从calico入手解决
查看详细信息
[root@holymaster1 ~]# kubectl describe pod calico-node-77vsk -n kube-system
Events:
Type Reason Age From Message
Warning Unhealthy 4m9s (x590 over 102m) kubelet (combined from similar events): Readiness probe failed: 2024-03-20 15:37:36.416 [INFO][15623] confd/health.go 180: Number of node(s) with BGP peering established = 0
calico/node is not ready: BIRD is not ready: BGP not established with 192.168.0.52,192.168.0.18
进入到该calico-node-77vsk pod中查看地址
[root@holymaster1 ~]# kubectl exec -ti calico-node-77vsk -n kube-system -- sh
[root@holynode2 /]# cat /etc/calico/confd/config/bird.cfg
进入出现故障pod,查看route id 值发现绑定地址异常,并非宿主机的IP地址
解决的方法:修改配置,重新删除再安装一下calico解决
[root@holymaster1 ~]# vim calico.yaml
增加指定网卡的配置
# 指定网卡
- name: IP_AUTODETECTION_METHOD
value: "interface=enp.*"
看网卡如下:
执行删除
[root@holymaster1 ~]# kubectl delete -f calico.yaml
重新执行创建calico
[root@holymaster1 ~]# kubectl apply -f calico.yaml
测试域名解析是否正常
[root@holymaster1 ~]# kubectl run busybox --image busybox:1.28 --image-pull-policy=IfNotPresent --restart=Never --rm -it busybox -- sh