K8s - 内部域名解析 - 外

本文介绍了Kubernetes(K8s)中的DNS解析机制,包括K8s早期使用的kubeDNS架构和当前主流的CoreDNS配置。文章详细解释了CoreDNS的配置文件(Corefile),并展示了如何在K8s环境中查询和验证DNS解析。

现k8s中使用的都是coreDNS进行内部地址的解析及路由,在k8s v1.10之前的版本是使用kubeDNS。基于k8s 实战篇 - 镜像打包部署 - springboot&mysql - 3中的数据库链接配置,讨论一下内部域名解析问题

K8s内部域名解析

1、 K8s Kube-dns 架构

在这里插入图片描述

Kube-dns包含以下三个核心组件:
kubedns:监控kubernetes的Server资源的变化,根据Server的名称和ip地址生成DNS记录然后将DNS记录保存到内存中
dnsmasq:DNS配置工具,监听53端口,为集群提供DNS查询服务。dnsmasq 提供DNS缓存,降低了kubedns的查询压力,提升了DNS域名解析的整体性能;
exechealthz:健康检查,检查Kube-dns和dnsmasq的健康,对外提供/healthz HTTP接口以查询Kube-dns的健康状况。

2、K8s DNS 策略

Kubernetes 中 Pod 的 DNS 策略有四种类型。
Default(默认):Pod 继承所在主机上的 DNS 配置;
ClusterFirst(集群优先):K8s 的默认设置;先在 K8s 集群配置的 coreDNS 中查询,查不到的再去继承自主机的上游 nameserver 中查询;
ClusterFirstWithHostNet(集群 DNS 优先,并伴随着使用宿主机网络):对于网络配置为 hostNetwork 的 Pod 而言,其 DNS 配置规则与 ClusterFirst 一致;
None(无):忽略 K8s 环境的 DNS 配置,只认 Pod 的 dnsConfig 设置。
Kubernetes 目前在 Pod 定义中支持两个 DNS 策略:Default和ClusterFirst,dnsPolicy缺省为ClusterFirst。

3、CoreDns简介

coreDNS是一个DNS服务器,它使用go语言编写。CoreDns是一个灵活的可扩展的DNS服务器,作为kubernetes集群的默认DNS服务器。CoreDNS是经过Apache 许可证授权的,并且是完全开源的。引入表达力更强的DSL,即Corefile形式的配置文件(也是基于Caddy框架开发的)。

4、CoreDNS的配置及相关解析流程

coreDNS使用Corefile作为配置文件使用,如下:

coredns.io:5300 {
   
   
    file db.coredns.io
}

example.io:53 {
   
   
    log
    errors
    file db.example.io
}

example.net:53 {
   
   
    file db.example.net
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值