1. 应用的DNS管理
1.1.1. Pod的域名解析策略
[root@linux-node1 ~]# kubectl run dns-test --generator=run-pod/v1 --image=alpine --replicas=1 sleep 360000
pod/dns-test created
查看Pod
[root@linux-node1 ~]# kubectl get pod dns-test
NAME READY STATUS RESTARTS AGE
dns-test 1/1 Running 0 79s
Pod默认的DNS配置
[root@linux-node1 ~]# kubectl exec -it dns-test /bin/sh
/ # cat /etc/resolv.conf
nameserver 10.1.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
如何访问Service名称
/ # ping -c 3 wordpress-service.default.svc.cluster.local
PING wordpress-service.default.svc.cluster.local (10.1.92.244): 56 data bytes
64 bytes from 10.1.92.244: seq=0 ttl=64 time=0.074 ms
64 bytes from 10.1.92.244: seq=1 ttl=64 time=0.141 ms
64 bytes from 10.1.92.244: seq=2 ttl=64 time=0.187 ms
--- wordpress-service.default.svc.cluster.local ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.074/0.134/0.187 ms
DNS查询策略
[root@linux-node1 ~]# kubectl get pod dns-test -o yaml | grep dnsPolicy
dnsPolicy: ClusterFirst
- Default: Pod从其运行的节点中继承名称解析配置。
- ClusterFirst:(默认策略)与配置的群集域名后缀不匹配的任何DNS查询都将转发到从节点继承的上游名称服务器。
- ClusterFirstWithHostNet: 如果Pod使用了hostNetwork(例如Ingress Controller Treafik就是使用了hostNetwok),应显式设置其DNS策略为“ClusterFirstWithHostNet”。
- None: 它允许Pod忽略Kubernetes环境中的DNS设置,这时候会使用Pod Spec中的dnsConfig字段提供的DNS设置。