本文解释如何为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=设置成DNS服务的静态IP地址,当kubelet创建容器时则将此地址传递给容器。Kubernetes的DNS服务基于skyDNS库,支持forward lookups (A records)、service lookups (SRV records)、reverse IP address lookups (PTR records)。

从节点继承DNS配置

当kubelet启动容器时,除使用kubernetes内置的DNS服务,默认从节点继承其DNS配置。此特性使kubernetes系统中的容器DNS行为高度依赖低层节点,建议关闭,设置kubelet–resolv-conf选项为用户自定义配置文件,而非系统默认/etc/resolve.conf,这样容器继承的DNS配置由用户提供的配置文件决定,而非节点,降低耦合度。

配置存根域及上游DNS服务器

集群管理员可通过为kubernetes中DNS服务kube-system:kube-dns提供ConfigMap对象,设置自定义存根域及上游DNS服务器。以下示例为DNS服务配置一个存根域及两个上游DNS服务器:

apiVersion: v1
kind: ConfigMap
metadata:name: kube-dnsnamespace: 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的影响

如果pod Spec之dnsPolicy设置为”Default”或者”Node”,则用户自定义存根服务器与上游服务器对pod没有影响。当值为”Default”时,pod之DNS配置完全从节点继承。如果为Node,则取决于pod Spec中的dnsConfig配置。

当dnsPolicy设置为”ClusterFirst”时,pod的DNS配置分成没无自定义存根域与上游服务器、有自定义存根域与上游服务器两种情况。

无自定义存根域与上游服务器:如果查询请求之域名前缀与集群默认域名匹配,则使用kubernetes内置DNS服务,如果不匹配则使用从节点继承之DNS服务。

有自定义存根域与上游服务器,域名解析流程如下:

1、请求首先发送到kube-dns缓存层。
2、在缓存层,检查请求的域名前缀并将请求转发到与之匹配的DNS服务器,流程如下:

  • 与集群域名前缀匹配,如“.cluster.local”,则发往kube-dns。
  • 如与存根域匹配,如“.acme.local”, 则发往匹配的存根域服务器。
  • 否则,发往上游服务器。

    ConfigMap选项

    配置CoreDNS
    从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 {errorshealthkubernetes cluster.local  in-addr.arpa ip6.arpa {upstream  8.8.8.8 8.8.4.4pods insecurefallthrough in-addr.arpa ip6.arpa}federation cluster.local {foo foo.feddomain.com}prometheus :9153proxy .  8.8.8.8 8.8.4.4cache 30}abc.com:53 {errorscache 30proxy . 1.2.3.4}my.cluster.local:53 {errorscache 30proxy . 2.3.4.5}

原文出处:csdn -> https://blog.csdn.net/dkfajsldfsdfsd/article/details/81218480

Kubernetes之配置与自定义DNS服务相关推荐

  1. ubuntu 局域网dns服务器_如何在 Ubuntu 16.04 服务器上配置内网 DNS 服务

    DNS 1. 简介 本文使用 BIND9,用尽量少的步骤,搭建出一个可用的内网 DNS 服务.另外要说明的一点是,本文不仅适用于 Ubuntu 16.04,也使用其后的 Ubuntu 系统(截止到目前 ...

  2. linux yum 安装dns,centos7配置YUM安装DNS服务

    1.配置DNS地址vim /etc/resolv.conf nameserver 192.168.1.100 #注:这里的地址是你DNS服务器本机的地址 2.安装dns服务yum install bi ...

  3. Kubernetes 集群 DNS 服务发现原理

    简介:本文介绍 Kubernetes 集群中 DNS 服务发现原理. 本文介绍 Kubernetes 集群中 DNS 服务发现原理. 前提需要 拥有一个 Kubernetes 集群(可以通过 ACK ...

  4. bind9 dns服务

    bind9 dns服务 Bind9是开源的DNS解析服务,此文档安装在 192.168.1.100服务器上,操作系统版本为centos8 安装与配置 [root@www ~]# yum -y inst ...

  5. 微软不再为 DNS over HTTPS (DoH) 提供 Google PublicDNS 和 Cloudflare DNS 服务提供商

    如果你尝试在 Microsoft Edge 浏览器设置中自行选择 DNS 服务提供商,那么现在微软不再为 DNS over HTTPS (DoH) 提供 Google PublicDNS 和 Clou ...

  6. centos7执行sh文件_一文看懂centos7如何管理自定义脚本服务

    概述 centos6如果要添加自定义脚本服务只需要把脚本放到/etc/init.d然后授权后用chkconfig添加后就可以管理了,那么centos7又是怎么添加自定义脚本服务呢? CentOS7添加 ...

  7. docker 安装nacos_康过来!Nacos配置和管理微服务的使用

    Nacos 具有如下特性: 服务发现和服务健康监测:支持基于DNS和基于RPC的服务发现,支持对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求: 动态配置服务:动态配置服务可以让您以中心化 ...

  8. kubernetes集群配置dns服务

    本文将在前文的基础上介绍在kubernetes集群环境中配置dns服务,在k8s集群中,pod的生命周期是短暂的,pod重启后ip地址会产生变化,对于应用程序来说这是不可接受的,为解决这个问题,K8S ...

  9. k8s DNS服务配置

    一.DNS服务概述 service发现是k8s中的一个重要机制,其基本功能为:在集群内通过服务名对服务进行访问,即需要完成从服务名到ClusterIP的解析. k8s主要有两种service发现机制: ...

最新文章

  1. Ubuntu 18.04.1 搭建Java环境和HelloWorld
  2. SP-45ML光电二极管放大电路及其动态特性
  3. Java学习笔记20
  4. Ajax — 第三天
  5. halcon rectangle1_domain缩减图像域为矩形
  6. 基于HTML5(微信公众号,小程序)的视频安防解决方案浅析
  7. 关于CC2541蓝牙开发板的学习笔记
  8. 云计算发展趋势-华为HCIA云计算学习笔记六
  9. V2X测试系列——如何实现C-V2X HIL测试
  10. 上海交通大学电子与通信工程819考研上岸经验分享
  11. WIN10开机显示被调用的对象已与其客户端断开连接解决方法之一
  12. 跟相亲对象微信聊什么?聊天绝学四步走一试便知有没有
  13. 不得不了解的HTTP协议
  14. 一线互联网企业高级Android工程师面试题大全,含小米、腾讯、阿里
  15. HTML5历史状态管理history API-pushState/replaceState与popstate事件
  16. Android秀翻天的操作——使用协程进行网络请求
  17. 工业智能网关BL110应用之60:如何实现智能楼宇控制BACnet 接入阿里云平台
  18. 搜索引擎(三)-- 搜索器
  19. oracle 同义词 synonym 创建与删除表
  20. PIX飞控LOITER模式刹车设置

热门文章

  1. PyTorch 多机多卡训练:分布式实战与技巧
  2. 计算机视觉算法岗面经,2019秋招资料
  3. QQ浏览器下拉词推广是什么?
  4. java dsa 私钥_OpenSSL工具 DSA私钥及公钥生成
  5. 永州计算机职称考试网,永州2016年11月职称计算机考试时间
  6. 关于电路的书的读后感_通知 | 2021.1.1日起,专利和集成电路布图设计收费启用电子票据...
  7. vba把图片转成二进制_70多岁日本老人用Excel画画,我用VBA将图片转成标注图
  8. NPM酷库:cheerio,服务端jQuery接口实现
  9. 如何创建免费的Hyper-V Server故障转移集群
  10. numpy数据类型dtype转换