kubernetes CoreDNS
来源:原创
时间:2019-06-19
作者:脚本小站
分类:云原生
从 Kubernetes v1.12 开始,CoreDNS 是推荐的 DNS 服务器,CoreDNS 是通用的权威 DNS 服务器,可以用作集群 DNS,符合 DNS 规范。
在每个kubelet启动参数加上如下两个参数:
--cluster-dns=169.169.0.100 \ --cluster-domain=cluster.local \
CoreDNS的ConfigMap:CoreDNS的配置文件Corefile
apiVersion: v1 kind: ConfigMap metadata: name: coredns namespace: kube-system data: Corefile: | .:53 { errors health { lameduck 5s } ready kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure fallthrough in-addr.arpa ip6.arpa ttl 30 } hosts { # 直接加hosts解析 192.168.1.53 www.example.com fallthrough # 解析不到传递给下一个插件 } rewrite name example.com example.default.svc.cluster.local # 类似cname,但是是指向集群内地址 forward . /etc/resolv.conf forward . 114.114.114.114 223.5.5.5 # 指定DNS服务地址 prometheus :9153 # 被prometheus监控地址 cache 30 loop reload loadbalance } scriptjc.com:53 { # 对特定域名进行指定DNS服务地址,如内网的域名用内网的DNS服务 errors cache 30 forward . 192.168.1.53 }
Corefile 配置包括以下 CoreDNS 插件:
errors:错误记录到标准输出。
health:存活性检测,地址 http://localhost:8080/health
ready:就绪性检测,端口 8181
kubernetes:为k8s的service IP、Pod IP提供反向解析。 ttl 0 表示不缓存。
prometheus:为prometheus提供监控指标,地址:http://localhost:9153/metrics
forward:不在 Kubernetes 集群域内的任何查询都将转发到 预定义的解析器 (/etc/resolv.conf).
cache:启用前端缓存。
loop:向上查询出现循环则中止 CoreDNS 进程。
reload:自动重载配置,改配置无需重启Pod。
loadbalance:这是一个轮转式 DNS 负载均衡器, 它在应答中随机分配 A、AAAA 和 MX 记录的顺序。
详见官方地址:
kubernetes.io/zh/docs/tasks/administer-cluster/dns-custom-nameservers/
更多用法:
support.huaweicloud.com/usermanual-cce/cce_01_0361.html
busybox.yaml
kubectl run pod-test --image=busybox:1.28 --generator='run-pod/v1' -- sleep 3600
测试:
]# kubectl exec busybox -it -- sh / # nslookup kube-dns.kube-system Server: 169.169.0.100 Address 1: 169.169.0.100 Name: kube-dns.kube-system Address 1: 169.169.0.100