在kube-dns中插入自定义解析记录-kube-dns
目的:有时需要从集群内部访问外部的自定义的域名记录,因此需要能从集群内部解析到,在集群内部的DNS服务器上添加自定义的解析记录,可以达到这一点要求。
注意:kubernetes 1.14开始,已经开始使用coredns作为集群内部域名解析服务器,本案例不再适宜。请参考本系列另外一篇文章”在kube-dns中插入自定义解析记录-coredns“
1. 在kube-system命名空间创建一个自定义解析记录的configmap
apiVersion: v1
kind: ConfigMap
metadata:
name: kubedns
namespace: kube-system
data:
dnsconfig: |-
192.168.0.36 bigdata-master001
192.168.0.33 bigdata-master002
192.168.0.35 bigdata-slave001
192.168.0.34 bigdata-slave002
192.168.0.32 bigdata-slave003
2. 给kube-dns中的dnsmasq容器挂载自定义的记录文件
添加一个volume:
volumes:
- name: extra-dns-config
configMap:
name: kubedns
3. 挂载给dnsmasq容器
volumeMounts:
- mountPath: /etc/dnsmasq.hosts
name: extra-dns-config
subPath: dnsconfig
4. 修改dnsmasq容器的启动参数
在dnsmasq容器的启动参数中添加一行:
--addn-hosts=/etc/dnsmasq.hosts
5. 重启kube-dns生效
当部署有Rancher
管理平台时,可以直接在界面上进行操作,如果没有部署,则在命令行执行下面的命令操作:
$ kubectl -n kube-system scale deployment kube-dns --replicas=0
等待kube-dns的pod数目变为0后,再恢复:
$ kubectl -n kube-system scale deployment kube-dns --replicas=2
测试,进入任意一个具有ping命令的pod中,ping自己插入的域名,能通就说明已经生效了。