本文介绍 CoreDNS 相关配置以及验证方法,实验环境为 Kubernetes 1.11,搭建方法参考kubeadm安装kubernetes V1.11.1 集群 。想要了解更多 Kubernetes 相关知识,可以阅读 Kubernetes 系列学习文章。
busybox 的槽点
开始之前先吐槽一下busybox中的nslookup
命令。这个命令应该是实现的不是很完全,导致我在测试DNS的成功,得到了错误的信息。先来看一下
1 | [root@devops-101 ~]# kubectl run busybox1 --rm -it --image=docker.io/busybox /bin/sh |
看起来像是DNS没有响应,慢着,使用带nslookup的alphine试一下。
1 | [root@devops-101 ~]# kubectl run dig --rm -it --image=docker.io/azukiapp/dig /bin/sh |
好好的啊!就是这个原因,busybox坑了我好几天。
CoreDNS
CoreDNS在Kubernetes1.11版本已经做为GA功能释放,成为Kubernetes默认的DNS服务替代了Ku be-DNS,目前是kubeadm、kube-up、minikube和kops安装工具的默认选项。
kube-dns translates to the proxy in CoreDNS. The```federation```in kube-dns has an equivalent```federation```in CoreDNS.
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
28
29
30
## 配置文件
使用kubeadm安装CoreDNS,会使用ConfigMap做为配置文件。这份配置文件,会默认使用宿主机的DNS服务器地址。
```bash
[root@devops-101 ~]# kubectl -n kube-system get configmap coredns -oyaml
apiVersion: v1
data:
Corefile: |
.:53 {
errors
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153
proxy . /etc/resolv.conf
cache 30
reload
}
kind: ConfigMap
metadata:
creationTimestamp: 2018-08-20T07:01:55Z
name: coredns
namespace: kube-system
resourceVersion: "193"
selfLink: /api/v1/namespaces/kube-system/configmaps/coredns
uid: ec72baa4-a446-11e8-ac92-080027b7c4e9配置文件各项目的含义
检查COreDNS运行状况
检查Pod状态
1 | [root@devops-101 ~]# kubectl -n kube-system get pods -o wide |
检查部署
1 | [root@devops-101 ~]# kubectl -n kube-system get deployments |
验证可以采用本文刚开始部分提到的方法。