k8s-DNS服务搭建和配置指南
1.作为服务发现机制的基本功能,在集群内需要能够通过服务名对服务进行访问,这就需要一个集群范围内的
DNS服务来完成从服务名到ClusterIP地址的解析
2.Kubernetes集群的DNS服务便由CoreDNS提供。CoreDNS是CNCF基金会孵化的一个项目,是用Go语言
实现的高性能、插件式、易扩展的DNS服务端
3.CoreDNS支持自定义DNS记录及配置upstream DNS Server,可以统一管理Kubernetes基于服务的内部
DNS和数据中心的物理DNS
4.修改每个node上kubelet的dns启动参数
修改每个Node上kubelet的启动参数,在其中加上以下两个参数。
◎ --cluster-dns=169.169.0.100:为DNS服务的ClusterIP地址。
◎ --cluster-domain=cluster.local:为在DNS服务中设置的域名。
5.部署coredns服务
部署coreDns服务时,需要创建3个资源对象,1个configmap,1个deployment和1个service,
5.1:在启用了RBAC的集群中,还可以设置ServiceAccount、ClusterRole、ClusterRoleBinding对CoreDNS容器进行权限设置
configmap主要设置coredns的主配置文件,可以定义各种域名的解析方式和使用的插件,实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | apiVersion: vl kind: ConfigMap metadata: name: coredns namespace : kube-system labels: addonmanager,kubernetes.io/mode: EnsureExists data: Corefile: cluster,local{ errors health { lameduck 5s } ready kubernetes cluster.local 169.169.0.0/16{ fallthrough in -addr.arpa ip6.arpa } prometheus :9153 forward . /etc/resolv.conf cache 30 loop reload loadbalance } { cache 30 loadbalance forward . /etc/resolv,conf } |
5.2:Deployment“coredns”主要设置CoreDNS容器应用的内容,其中,replicas副本的数量通常应该根据集群的规模和服务数量确定,如果单个
CoreDNS进程不足以支撑整个集群的DNS查询,则可以通过水平扩展提高查询能力。由于DNS服务是Kubernetes集群的关键核心服务,
所以建议为其Deployment设置自动扩缩容控制器
5.3:Service“kube-dns”是DNS服务的配置,这个服务需要设置固定的ClusterIP地址,
也需要将所有Node上的kubelet启动参数--cluster-dns都设置为这个ClusterIP地址
6.服务名的DNS解析
接下来使用一个带有nslookup工具的Pod来验证DNS服务能否正常工作:
1 2 3 4 5 6 7 8 9 10 11 12 13 | busybox.yaml apiversion: v1 kind: pod metadate: name: busybox namespace : default spec: containers: -name: busybox image: gcr.io/google_containers/busybox command: - sleep - "3600" |
运行kubectl create -f busybox.yaml 完成创建
在该容器运行成功时,通过kubectl exec -it <container_id> -- nslookup 进行测试
# kubectl exec busybox -- nslookup redis-master
可以看到,通过DNS服务器169.169.0.100成功解析了redis-master服务器的ip地址169.169.8.10
如果某个Service属于不同的命名空间,那么在进行Service查找时,需要补充Namespace的名称,如下
# kubectl exec busybox -- nslookup kube-dns.kube-system
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)