首页 > 解决方案 > 为什么 Kubernetes 中的 coredns 无法解析 Pod DNS 记录

问题描述

ytong@controller-4135505:~/cka$ cat 14.15-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: busy33
  labels:
    app: 14-15
spec:
  dnsPolicy: ClusterFirstWithHostNet
  hostname: 14-15
  subdomain: ytong82
  containers:
  - name: busybox-container
    image: busybox
    command: ['sleep', '3600']
ytong@controller-4135505:~/cka$ kubectl get pods -o wide | grep busy33
busy33                     1/1     Running     0          91s     10.36.0.1   worker3-4135521   <none>           <none>

我尝试解析其 pod DNS 记录,如下所示

ytong@controller-4135505:~/cka$ kubectl exec -it busy33 -- nslookup -type=a 10-36-0-1.default.svc.cluster.local
Server:         10.96.0.10
Address:        10.96.0.10:53

** server can't find 10-36-0-1.default.svc.cluster.local: NXDOMAIN

command terminated with exit code 1
ytong@controller-4135505:~/cka$ kubectl exec -it busy33 -- nslookup -type=a 14-15.ytong82.default.svc.cluster.local
Server:         10.96.0.10
Address:        10.96.0.10:53

** server can't find 14-15.ytong82.default.svc.cluster.local: NXDOMAIN

command terminated with exit code 1

以上命令均不起作用。

标签: kubernetes

解决方案


使用图像busybox:1.28而不是其他图像,因为这些图像存在 DNS 解析问题。

当您尝试使用 pod 进行 DNS 解析时,您需要使用以下命令pod代替svc

kubectl exec -it busy33 -- nslookup 10-36-0-1.default.pod.cluster.local

推荐阅读