在Kubernetes的DNS服务器中插入自定义解析记录-kube-dns

在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自己插入的域名,能通就说明已经生效了。

你可能感兴趣的:(在Kubernetes的DNS服务器中插入自定义解析记录-kube-dns)