用于排查k8s dns 问题调试工具
部署 DNS 调试工具
ndsutils.yaml
1
2
3
4
5
6
7
8
9
10apiVersion: v1
kind: Pod
metadata:
name: dnsutils
spec:
containers:
- name: dnsutils
image: mydlqclub/dnsutils:1.3
imagePullPolicy: IfNotPresent
command: ["sleep","3600"]查看日志
1
2$ for p in $(kubectl get pods --namespace=kube-system -l k8s-app=kube-dns -o name); \
do kubectl logs --namespace=kube-system $p; doneCoreDNS 域名解析日志信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27使用 kubectl edit 命令来修改存储于 Kubernetes ConfigMap 中的 CoreDNS 配置参数信息,添加 log 参数,让 CoreDNS 日志中显示域名解析信息:
## 编辑 coredns 配置
$ kubectl edit configmap coredns -n kube-system
apiVersion: v1
data:
Corefile: |
.:53 {
log #添加log
errors
health {
lameduck 5s
}
ready
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
}
prometheus :9153
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
1 | CoreDNS 配置参数说明: |
- Pod 中的 DNS 配置信息
一般 Pod 中的 DNS 策略默认为 ClusterFirst,该参数起到的作用是,优先从 Kubernetes DNS 插件地址读取 DNS 配置。所以,我们正常创建的 Pod 中,DNS 配置 DNS 服务器地址应该指定为 Kubernetes 集群的 DNS 插件 Service 提供的虚拟 IP 地址。
1 | 注:其中 DNS 策略(dnsPolicy)支持四种类型: |