开发服务器 k8s 设置 自定义 dns解析

问题描述:开发服务器在内网,开发人员有时候会在家里或在其他地方进行开发,用的服务器端口转发到内网,更多的时候在同一个地方进行开发,频繁的设置更改开发地址非常不方便,那么有没有更好的解决方法呢?

解决方法:统一开发地址为域名地址,通过自定义解析域名,就可以解决改开发地址的问题。

环境说明

k8s 1.15
centos 7.x
域名:server.dev.foxwho.com
网卡IP:192.168.0.254 10.1.99.99

centos 开发服务器 安装 dnsmasq 域名解析服务

yum  -y  install dnsmasq

修改 dnsmasq 配置

文件:/etc/dnsmasq.conf
修改内容如下

resolv-file=/etc/resolv.dnsmasq.conf
strict-order
listen-address=127.0.0.1,10.1.99.99,192.168.0.254
addn-hosts=/etc/dnsmasq.hosts

参数解释:

resolv-file 定义dnsmasq从哪里获取上游DNS服务器的地址, 默认是从/etc/resolv.conf获取。在此我们定义的是从/etc/resolv.dnsmasq.conf文件中获得。
strict-order 表示严格按照resolv-file文件中的顺序从上到下进行DNS解析,直到第一个解析成功为止。
listen-address 定义dnsmasq监听的地址,默认是监控本机的所有网卡上
addn-hosts 添加主机记录,就和/etc/hosts文件一样,添加物理机hostnameip映射

新建配置文件 /etc/resolv.dnsmasq.conf
根据你自己的 服务器填写

nameserver 192.168.0.1
nameserver 223.5.5.5
nameserver 223.6.6.6

新建配置文件 /etc/dnsmasq.hosts
根据你自己的 服务器hosts 填写

127.0.0.1 localhost
192.168.0.254 server.dev.foxwho.com

启动 dnsmasq 服务

systemctl enable dnsmasq --now 
或
systemctl enable dnsmasq && systemctl start  dnsmasq

查看状态

systemctl status dnsmasq

修改 服务器 nameserver 地址

修改服务器中的/etc/resolv.conf里面 nameserver地址换成dnsmasq的服务地址,默认监听53端口。

nameserver 192.168.0.254

更新k8s dns 解析

查询 k8s dns

kubectl -n kube-system  get pods

输出

coredns-8686dcc4fd-4bpqs                1/1     Running   0          20m
coredns-8686dcc4fd-xsd5h                1/1     Running   0          20m
etcd-foxserver                          1/1     Running   4          80d
kube-apiserver-foxserver                1/1     Running   41         80d
kube-controller-manager-foxserver       1/1     Running   6          80d
kube-flannel-ds-amd64-jdxx4             1/1     Running   4          80d
kube-proxy-x79qh                        1/1     Running   4          80d
kube-scheduler-foxserver                1/1     Running   6          80d
kubernetes-dashboard-76f6bf8c57-x5ph8   1/1     Running   4          80d

删除 coredns 让 k8s 重新创建新的 coredns

kubectl -n kube-system delete pod coredns-8686dcc4fd-4bpqs
kubectl -n kube-system delete pod coredns-8686dcc4fd-xsd5h

等待几秒钟,再次kubectl -n kube-system get pods 查看 就会看到新的已经创建成功并运行

测试dns

服务器测试

ping server.dev.foxwho.com

输出

PING server.dev.foxwho.com (192.168.0.252) 56(84) bytes of data.
64 bytes from foxserver (192.168.0.252): icmp_seq=1 ttl=64 time=0.025 ms
64 bytes from foxserver (192.168.0.252): icmp_seq=2 ttl=64 time=0.056 ms
64 bytes from foxserver (192.168.0.252): icmp_seq=3 ttl=64 time=0.057 ms
64 bytes from foxserver (192.168.0.252): icmp_seq=4 ttl=64 time=0.058 ms

k8s 测试

sentinel-0 为 是 你自己创建的 pod

kubectl exec -it sentinel-0  ping server.dev.foxwho.com

输出

PING server.dev.foxwho.com (192.168.0.252) 56(84) bytes of data.
64 bytes from 192-168-0-252.kubernetes.default.svc.cluster.local (192.168.0.252): icmp_seq=1 ttl=64 time=0.036 ms
64 bytes from 192-168-0-252.kubernetes.default.svc.cluster.local (192.168.0.252): icmp_seq=2 ttl=64 time=0.089 ms
64 bytes from 192-168-0-252.kubernetes.default.svc.cluster.local (192.168.0.252): icmp_seq=3 ttl=64 time=0.069 ms
64 bytes from 192-168-0-252.kubernetes.default.svc.cluster.local (192.168.0.252): icmp_seq=4 ttl=64 time=0.069 ms
64 bytes from 192-168-0-252.kubernetes.default.svc.cluster.local (192.168.0.252): icmp_seq=5 ttl=64 time=0.069 ms
64 bytes from 192-168-0-252.kubernetes.default.svc.cluster.local (192.168.0.252): icmp_seq=6 ttl=64 time=0.073 ms

域名绑定

假设,外部端口转发的服务器IP 为 47.52.41.70,那么在域名解析中 把 server.dev.foxwho.com 的IP指向为 47.52.41.70

公司内部网络

如果有条件的(公司路由器支持的),在路由器中设置 域名 server.dev.foxwho.com 指向IP 192.168.0.254
没有条件的话,在每个开发人员的电脑上设置 /etc/hosts ,如果开发人员的电脑会带外出,那么记得 把 该 hosts 给删除

192.168.0.254 server.dev.foxwho.com

至此,内网,外网都可以正常访问,不用再频繁更改 开发服务器Ip了

kubernetes coredns 添加自定义DNS解析记录

自定义解析看如下
https://blog.csdn.net/kunyus/article/details/88841159

来源
https://www.cnblogs.com/cuishuai/p/9856843.html

Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。 在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。 虽说我们可以使用比如Kubeadm工具可以简化k8s集群的部署,但这却对我们k8s的各个组件如何协同工作,及排错造成困扰。本套课程主要是以二进制的方式来一步步的安装k8s的集群,来加深我们对K8s集群进一步的理解。同时也可以作为我们生产部署的一种方式。 知识讲解:    1.   概述了K8s的集群的一个整体架构。  2. 为了实现各个组件的通信,讲解了如何为各组件签发证书、配置kubeconfig、和产生加密的key及密钥。  3. Etcd键值存储集群的部署。  4. K8s的主节点的三大组件一步步的部署。  5. K8s的worker节点的三大组件及flannel网络插件部署。  6. 部署kube coredns作为k8s内部的域名解析。 注意:本课程学习需要具有一定的Linux基础,**是学习过K8s集群或者在使用K8S使用有一段时间的。这样可以更好的理解本套课程内容。
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页