测试k8s中创建的pod是否可以正常访问网络
执行下面命令,在k8s集群上创建一个名为busybox的pod,然后在该pod内运行一个BusyBox的容器
[root@bs-m1 ~]# kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh命令解析:
kubectl run busybox:创建一个新的Pod或部署到已有的Deployment、StatefulSet中。这里使用此命令创建了一个新的Pod,Pod的名字是busybox。
--image busybox:1.28:Pod使用的Docker镜像的名称和版本。这里使用的是版本为1.28的busybox镜像。
--restart=Never:Pod的重启策略。这里设置为Never,即如果该Pod出现故障,就不会自动重启。
--rm:容器退出后,自动清理该容器的资源(例如存储卷等)。
-it:以交互式终端的方式运行容器。
busybox:要启动的容器的名字。这里使用了busybox,因为我们正在运行一个busybox镜像。
sh:在容器中执行的命令是shell(sh)。
进入容器后,执行下面命令探测网络情况
/ # ping www.baidu.com
PING www.baidu.com (220.181.111.232): 56 data bytes
64 bytes from 220.181.111.232: seq=0 ttl=52 time=3.971 ms
64 bytes from 220.181.111.232: seq=1 ttl=52 time=18.702 ms
64 bytes from 220.181.111.232: seq=2 ttl=52 time=3.854 ms可以看到,在Kubemnetes中创建的Pod能访问百度网站,说明Calico网络插件已经被正常安装了,可以访问网络。
测试CoreDNS是否正常
CoreDNS是一个Kubemmetes集群中非常重要的DNS服务器,它通过提供命名服务简化了服务间通信和DNS解析的管理和维护。
在Kubernetes中,每个Pod都有一个唯一的DNS名称,例如pod-name.namespace-name.svc.cluster-domain.tld,其中cluster-domain.tld是集群中使用的域名后缀。每个服务都有一个DNS名称,例如service-name.namespace-name.svc.cluster-domain.tld,它将解析为该服务的群集P地址。
CoreDNS使用插件来支持各种DNS记录类型,例如A、CNAME、SRV等。它可以与Kubernetes的API服务器进行交互,以了解Kuberetes中运行的应用程序和服务的状态。CoreDNS还支持在Kubermetes中使用自定义DNS名称,这些名称将映射到外部DNS记录。
如果要测试CoreDNS是否正常工作,可执行以下命令:
/ # nslookup kubernetes.default.svc.cluster.local
Server: 192.168.24.10
Address 1: 192.168.24.10 kube-dns.kube-system.svc.cluster.local
Name: kubernetes.default.svc.cluster.local
Address 1: 192.168.24.1 kubernetes.default.svc.cluster.localnslookup kubernetes.default.svc.cluster.local用于解析Kubernetes中的apiserver这个Pod前面的代理Service域名,内部Service的名称是通过coreDNS来解析的。192.168.24.10就是coreDNS的clusterIP,说明coreDNS配置好了。