定制k8s域名解析------CoreDns配置实验
1. 需求

 k8s集群内通过CoreDns互相解析service名.
 同时pana.cn域为外部dns解析,需要通过指定dns服务器进行解析
 再有3个服务器,需要使用A记录进行解析
2. K8s外DNS服务器
查看解析文件
tail -3 /var/named/pana.cn.zone 
 
解析内容
www     A       192.168.126.77
ftp     A       192.168.126.7
web     A       192.168.126.17
 
测试
dig www.pana.cn @192.168.126.77
 

3. 部署测试容器
3.1 部署测试容器
admin-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: admin-deploymentlabels:app: admin
spec:replicas: 1selector:matchLabels:app: admintemplate:metadata:labels:app: adminspec:containers:- name: adminimage: qiuqin/admin_tools:latestimagePullPolicy: IfNotPresent
 
部署容器
kubectl apply -f admin-deploy.yaml 
 

3.2 测试解析
显然现在没有办法解析到集群外dns中的内容
kubectl exec -it admin-deployment-59b4d7746c-cv967 dig www.pana.cn
 

4. CoreDns配置
4.1 配置coredns configmap
kubectl edit cm -n kube-system coredns 
 
在Corefile下追加以下内容
    pana.cn:53 {errorscache 30forward . 192.168.126.77}
 

 将coredns相关pod删除重建
kubectl get pods -n kube-system
kubectl delete pod coredns-857d9ff4c9-2vwj8 coredns-857d9ff4c9-hwr2n -n kube-system 
kubectl get pods -n kube-system
 
确认pod已更新
 
4.2 测试解析
可以看到现在已经可以解析到k8s集群外dns服务器中的记录了.
kubectl exec -it admin-deployment-59b4d7746c-cv967 dig www.pana.cn
kubectl exec -it admin-deployment-59b4d7746c-cv967 dig ftp.pana.cn
 

5. 解析单条记录
5.1 CoreDns configmap配置
测试一条记录test.aa.cc,显然现在是没法解析的
kubectl exec -it admin-deployment-59b4d7746c-cv967 dig test.aa.cc
 

 一样修改coredns的configmap
 加入hosts {} 内容,注意位置要在.:53{}中
apiVersion: v1
data:Corefile: |pana.cn:53 {errorscache 30forward . 192.168.126.77}.:53 {errorshealth {lameduck 5s}readykubernetes cluster.local in-addr.arpa ip6.arpa {pods insecurefallthrough in-addr.arpa ip6.arpattl 30}hosts {10.195.1.8 test.aa.cc192.168.31.7 aa.bb.tt172.31.125.4 qiu.qin.com}prometheus :9153forward . /etc/resolv.conf {max_concurrent 1000}cache 30loopreloadloadbalance}
kind: ConfigMap
metadata:creationTimestamp: "2024-03-10T12:21:53Z"name: corednsnamespace: kube-systemresourceVersion: "9546954"uid: 1fa9a51c-0c22-4d6d-9d29-00a0d147d8ed
 
删除pod使得coredns配置生效(生产环境切记要在低峰期执行)
kubectl delete pod -n kube-system coredns-857d9ff4c9-lnsg8 coredns-857d9ff4c9-4bnx5 
 
5.2 测试hosts
依次解析我们自定义的3个域名,获得了我们自定义的地址返回
kubectl exec -it admin-deployment-59b4d7746c-cv967 dig qiu.qin.com
kubectl exec -it admin-deployment-59b4d7746c-cv967 dig test.aa.cc
kubectl exec -it admin-deployment-59b4d7746c-cv967 dig aa.bb.tt
 

 解析pana.cn域也是正常的
 
 至此定制k8s域名解析------CoreDns配置实验完成