在 K8s 集群中,除了可以通过 Cluster IP 访问 Service 外,还可通过 DNS 进行访问,在查看系统名称空间的 deployment 时,你会发现有个叫 coredns
的组件,如下图所示:
coredns
是一个 DNS 服务器,每次创建 Service 时,coredns 都会添加该 Service 的 DNS 记录。
接下来创建一个临时 Pod 来验证通过 DNS 来访问 Service:
# 创建Pod
kubectl run busybox --rm -it --image=busybox /bin/sh
# 验证(由于namespace都是default,所以可以忽略不写)
wget <ServiceName>:<namaspace>
如果 namespace 不同,就需要跟上 namespace,具体案例如下:
# 先创建个namespace
kubectl create namespace dns-test
# 再启动一个测试deployment/Service资源
kubectl apply -f nginx1.yml
验证:
以上就是 DNS 访问 Service 的具体方法。