2020-05-24 19:20:18
本文解释如何为kubernetes集群配置及自定义DNS服务。从kubernetes1.11版本开始,coreDNS插件被包含在GA发行版中,并且被kubeadm默认安装。详情:Configuring CoreDNS and Using CoreDNS for Service Discovery。除特别说明,本文讨论的是默认dns插件。
Kubernetes的DNS功能以插件形式提供,是自动启动的系统内置服务。服务包含如下三个容器:
kubedns:监控Kubernetes master的service与endpoint变更,增删改DNS记录,将相关数据保存在内存中,为DNS查询提供服务。 dnsmasq: 充当DNS缓存,提高性能。 sidecar:挂斗容器,对dnsmasq与kubedns进行单点健康检查。DNS服务拥有静态IP地址,将各节点kubeletr的–cluster-dns=
当kubelet启动容器时,除使用kubernetes内置的DNS服务,默认从节点继承其DNS配置。此特性使kubernetes系统中的容器DNS行为高度依赖低层节点,建议关闭,设置kubelet–resolv-conf选项为用户自定义配置文件,而非系统默认/etc/resolve.conf,这样容器继承的DNS配置由用户提供的配置文件决定,而非节点,降低耦合度。
集群管理员可通过为kubernetes中DNS服务kube-system:kube-dns提供ConfigMap对象,设置自定义存根域及上游DNS服务器。以下示例为DNS服务配置一个存根域及两个上游DNS服务器:
apiVersion: v1
kind: ConfigMap
metadata:
name: kube-dns
namespace: kube-system
data:
stubDomains: |
{"acme.local": ["1.2.3.4"]}
upstreamNameservers: |
["8.8.8.8", "8.8.4.4"]
如果查询请求的前缀为”acme.local”则被直接转发到1.2.3.4。下表列出不同域名前缀与DNS服务器对应关系:
如果pod Spec之dnsPolicy设置为”Default”或者”Node”,则用户自定义存根服务器与上游服务器对pod没有影响。当值为”Default”时,pod之DNS配置完全从节点继承。如果为Node,则取决于pod Spec中的dnsConfig配置。
当dnsPolicy设置为”ClusterFirst”时,pod的DNS配置分成没无自定义存根域与上游服务器、有自定义存根域与上游服务器两种情况。
无自定义存根域与上游服务器:如果查询请求之域名前缀与集群默认域名匹配,则使用kubernetes内置DNS服务,如果不匹配则使用从节点继承之DNS服务。
有自定义存根域与上游服务器,域名解析流程如下:
请求首先发送到kube-dns缓存层。在缓存层,检查请求的域名前缀并将请求转发到与之匹配的DNS服务器,流程如下:
与集群域名前缀匹配,如“.cluster.local”,则发往kube-dns。
如与存根域匹配,如“.acme.local”, 则发往匹配的存根域服务器。
否则,发往上游服务器。
从1.9版本开始,CoreDNS成为GA可选特性,将来可能会取代kube-dns成为默认集群默认DNS解决方案,CoreDNS具备kube-dns所有功能并更强大。在CoreDNS插件内部通过一种Corefile文件管理配置。可以直接将为kube-dns设置的ConfigMap直接指定给CoreDNS,CoreDNS自动将此ConfigMap转换成Corefile。示例如下:
apiVersion: v1
data:
federations: |
{"foo" : "foo.feddomain.com"}
stubDomains: |
{"abc.com" : ["1.2.3.4"], "my.cluster.local" : ["2.3.4.5"]}
upstreamNameservers: |
["8.8.8.8", "8.8.4.4"]
kind: ConfigMap
转换结果:
.:53 {
errors
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
upstream 8.8.8.8 8.8.4.4
pods insecure
fallthrough in-addr.arpa ip6.arpa
}
federation cluster.local {
foo foo.feddomain.com
}
prometheus :9153
proxy . 8.8.8.8 8.8.4.4
cache 30
}
abc.com:53 {
errors
cache 30
proxy . 1.2.3.4
}
my.cluster.local:53 {
errors
cache 30
proxy . 2.3.4.5
}
Kubernetes 应用故障的一些定位方法
02-17
Kubernetes主机间curl cluster ip时通时不通
04-03
Kubernetes集群中Service的滚动更新
02-17
GitHub是如何无缝迁移到Kubernetes的?
04-20
在Kubernetes上使用Sateful Set部署RabbitMQ集群
02-15
JVM类加载器是否可以加载自定义的String
06-18
ThinkCentre 自定义恢复出厂设置
03-16
openresty设置用于access_log的自定义变量
02-18
saltstack自定义模块
05-02
为OpenResty项目编写自定义Nginx C模块
03-05
微软 Powertoys 推出新的实用程序,自定义键盘快捷管理
05-06
CentOS7安装配置PostgreSQL数据库服务器
06-20
Linux 的系统服务及其配置
07-07
TR260 G2服务器内存DIMM安装配置和内存插的槽分布
06-23
服务器在主机外接SCSI卡连接SureSCSI310R阵列柜后,原系统无法正常启动。
07-01
CentOS 7配置并更换为本地或网络yum源
07-17
Debian 7 (Wheezy)安装配置Apache mod_fastcgi PHP-FPM
07-20
Jenkins运行多个步骤的配置
06-21
Linux smbd Samba服务器程序命令详解
06-28
Nginx HTTP2配置教程
06-23
MagicMouseTrails(自定义鼠标拖尾工具) v1.31 绿色中文版
388K
下载UltraSnap Pro v4.0.2.0绿色汉化版 多种抓图方式+自定义快捷键抓图
13.68 MB
下载namebench(DNS测试工具) 1.3.1 绿色版
4.4M
下载服务器安全工具(服务器安全防护软件) 1.2.2.0 免费绿色版
329.2K
下载C-Lodop云打印服务器下载
9.3M
下载tftpd32(网络服务包) V32.452 官方版
0.52MB
下载tomcat7.0 (Web 应用服务器)官方版
9.3M
下载windows server 2016(服务器操作系统)中文版
5.18G
下载xp iis(Web服务器)6.0 中文版
13.4M
下载华为浏览器(网页浏览服务软件)v6.1.2.1500 最新版
85.7M
下载网络文件服务器下载
837.6KB
下载7CMenuEditor官方下载 V4.5.0.0官方版
188KB
下载Emby Server下载
101M
下载HeidiSQL下载
10.1M
下载h3c模拟器下载
59.1M
下载securecrt下载
67.7MB
下载word字体下载
225MB
下载宝塔面板下载
25KB
下载护卫神主机大师下载
222MB
下载雨燕投屏下载
3.5M
下载