K8s集群中的DNS服务(CoreDNS)详解

80/TCP 3m56s

验证DNS
```csharp
[root@master ~/coredns]# kubectl exec -it pod/dns-source-pod -- sh
/ # nslookup dns-target-service.default.svc.cluster.local
Server:         10.96.0.10
Address:        10.96.0.10:53
Name:   dns-target-service.default.svc.cluster.local
Address: 10.96.3.51

验证在不同命名空间下的DNS访问

示例:

# 创建一个新的命名空间
[root@master ~/coredns]# kubectl create ns coredns
namespace/coredns created
[root@master ~/coredns]# kubectl get ns coredns
NAME      STATUS   AGE
coredns   Active   15s

创建Pod和Service进行验证

[root@master ~/coredns]# cat test-3.yaml
apiVersion: v1
kind: Pod
metadata:
  name: dns-coredns-pod
  namespace: coredns
  labels:
    app: dns-coredns-test
spec:
  containers:
  - name: busybox
    image: busybox
    command: ["sh", "-c", "while true; do sleep 3600; done"]
---
apiVersion: v1
kind: Service
metadata:
  name: dns-coredns-service
  namespace: coredns
spec:
  type: ClusterIP
  selector:
    app: dns-coredns-test
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
[root@master ~/coredns]# kubectl apply -f test3.yaml
pod/dns-coredns-pod created
service/dns-coredns-service created
[root@master ~]# kubectl get all -n coredns
NAME                  READY   STATUS    RESTARTS   AGE
pod/dns-coredns-pod   1/1     Running   0          4m36s
NAME                          TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)   AGE
service/dns-coredns-service   ClusterIP   10.96.0.119           80/TCP    4m36s

进行验证

[root@master ~/coredns]# kubectl exec -it dns-target-pod -- sh
/ # nslookup dns-coredns-service.coredns.svc.cluster.local
Server:         10.96.0.10
Address:        10.96.0.10:53
Name:   dns-coredns-service.coredns.svc.cluster.local
Address: 10.96.0.119