环境: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

VM虚拟机上使用busybox测试DNS解析不通_ico

结果爆出的是无法解析,那就是CoreDNS有问题l



从calico入手查问题

kubectl get pods -n kube-system -o wide

kubectl get pods -o wide

分别执行以上两个命令,得到如下结果

VM虚拟机上使用busybox测试DNS解析不通_ico_02

根据结果来看,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

VM虚拟机上使用busybox测试DNS解析不通_ide_03

进入出现故障pod,查看route id 值发现绑定地址异常,并非宿主机的IP地址

解决的方法:修改配置,重新删除再安装一下calico解决

[root@holymaster1 ~]# vim calico.yaml

VM虚拟机上使用busybox测试DNS解析不通_ide_04

增加指定网卡的配置

# 指定网卡
        - name: IP_AUTODETECTION_METHOD
          value: "interface=enp.*"

看网卡如下:

VM虚拟机上使用busybox测试DNS解析不通_IP_05

执行删除

[root@holymaster1 ~]# kubectl delete -f calico.yaml

VM虚拟机上使用busybox测试DNS解析不通_ide_06

重新执行创建calico

[root@holymaster1 ~]# kubectl apply -f calico.yaml

VM虚拟机上使用busybox测试DNS解析不通_ico_07

测试域名解析是否正常

[root@holymaster1 ~]# kubectl run busybox --image busybox:1.28 --image-pull-policy=IfNotPresent --restart=Never --rm -it busybox -- sh

VM虚拟机上使用busybox测试DNS解析不通_ico_08