添加默认配置

在 kubernetes 中将 DNS 设置配置在 dnsConfig 配置项中, 而 dnsConfig 包含在 PodSpec 配置项中,因此 Pod 内所有容器都共享相同的 Network Namespace 。如下所示:

apiVersion: v1

kind: Pod

metadata:

name: demo

namespace: default

spec:

containers:

- image: base/java

command:

- "java -jar /opt/app.jar"

imagePullPolicy: IfNotPresent

name: demo

restartPolicy: Always

dnsConfig:

nameservers:

- 172.xxx.xxx.201

searches:

- ns1.svc.cluster.local

- my.dns.search.suffix

options:

- name: ndots

value: "2"

- name: edns0

通过上述配置创建 Pod 之后,执行 kubectl exec demo cat /etc/resolv.conf 命令即可看到额外的配置项目,如下:

nameserver 10.20.0.2

nameserver 172.xxx.xxx.201

search default.svc.cluster.local svc.cluster.local cluster.local ns1.svc.cluster.local my.dns.search.suffix

options ndots:2 edns0

即,在 nameservers 中多了 172.xxx.xxx.201 、 search 中多了 ns1.svc.cluster.local 和 my.dns.search.suffix 两项值,及多了 options ndots:2 edns0 配置。

因此,直接通过 dnsConfig 进行配置后,默认是追加到当前默认配置中。

DNS 策略

在 kubernetes 中还提供了 dnsPolicy 决定 Pod 内预设 DNS 配置策略:

None 无任何策略

Default 默认

ClusterFirst 集群 DNS 优先

ClusterFirstWithHostNet 集群 DNS 优先,并伴随着使用宿主机网络

无策略 (None)

清除 Pod 预设 DNS 配置,当 dnsPolicy 设置成为这个值之后, kubernetes 不会为 Pod 预先加载任何逻辑用于判定得到 DNS 的配置。因此若将 dnsPolicy 设置为 None , 为了避免 Pod 里面没有 DNS 配置,最好通过 dnsConfig 来描述自定义的 DNS 参数。如下所示:

apiVersion: v1

kind: Pod

metadata:

name: demo

namespace: default

spec:

containers:

- image: base/java

command:

- "java -jar /opt/app.jar"

imagePullPolicy: IfNotPresent

name: demo

restartPolicy: Always

dnsPolicy: None

dnsConfig:

nameservers:

- 172.xxx.xxx.201

searches:

- ns1.svc.cluster.local

- my.dns.search.suffix

options:

- name: ndots

value: "2"

- name: edns0

通过上述配置创建 Pod 之后,执行 kubectl exec demo cat /etc/resolv.conf 命令即可看到额外的配置项目,如下:

nameserver 172.xxx.xxx.201

search ns1.svc.cluster.local my.dns.search.suffix

options ndots:2 edns0

默认预设 (Default)

Pod 里面的 DNS 配置继承了宿主机上的 DNS 配置。即,该 Pod 的 DNS 配置与宿主机完全一致。

apiVersion: v1

kind: Pod

metadata:

name: demo

namespace: default

spec:

containers:

- image: base/java

command:

- "java -jar /opt/app.jar"

imagePullPolicy: IfNotPresent

name: demo

restartPolicy: Always

dnsPolicy: Default

通过 cat /etc/resolv.conf 可查看到宿主机上的配置如下:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)

# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

nameserver 172.xxx.xxx.201

nameserver 114.114.114.114

通过上述配置创建 Pod 之后,执行 kubectl exec demo cat /etc/resolv.conf 命令即可看到额外的配置项目,如下:

nameserver 172.xxx.xxx.201

nameserver 114.114.114.114

集群优先 (ClusterFirst)

与 Default 相反,会预先使用 kube-dns (或 CoreDNS ) 的信息当预设置参数写入到该 Pod 内的DNS配置。

apiVersion: v1

kind: Pod

metadata:

name: demo

namespace: default

spec:

containers:

- image: base/java

command:

- "java -jar /opt/app.jar"

imagePullPolicy: IfNotPresent

name: demo

restartPolicy: Always

dnsPolicy: ClusterFirst

通过上述配置创建 Pod 之后,执行 kubectl exec demo cat /etc/resolv.conf 命令即可看到额外的配置项目,如下:

nameserver 10.20.0.2

search default.svc.cluster.local svc.cluster.local cluster.local

options ndots:5

注 如设置了 hostNetwork = true 时,ClusterFirst 会被强制转化为 Default 。如下:

apiVersion: v1

kind: Pod

metadata:

name: demo

namespace: default

spec:

containers:

- image: base/java

command:

- "java -jar /opt/app.jar"

imagePullPolicy: IfNotPresent

name: demo

hostNetwork: true

restartPolicy: Always

dnsPolicy: ClusterFirst

通过上述配置创建 Pod 之后,执行 kubectl exec demo cat /etc/resolv.conf 命令即可看到额外的配置项目,如下:

nameserver 172.xxx.xxx.201

nameserver 114.114.114.114

注 设置 hostNetwork = true 之后,会让 Pod 与该节点公用相同的网络空间(网卡/路由等)

宿主机与 Kubernetes 共存 ( ClusterFirstWithHostNet )

同时使用 hostNetwork 与 kube-dns 作为 Pod 预设 DNS 配置。

apiVersion: v1

kind: Pod

metadata:

name: demo

namespace: default

spec:

containers:

- image: base/java

command:

- "java -jar /opt/app.jar"

imagePullPolicy: IfNotPresent

name: demo

hostNetwork: true

restartPolicy: Always

dnsPolicy: ClusterFirstWithHostNet

通过上述配置创建 Pod 之后,执行 kubectl exec demo cat /etc/resolv.conf 命令即可看到额外的配置项目,如下:

nameserver 10.20.0.2

search default.svc.k8s.local. svc.k8s.local. k8s.local.

options ndots:5

k8s 自定义dns_kubernetes 容器 DNS 设置相关推荐

  1. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...

  2. 将应用制作成镜像发布到服务器k8s上作为容器微服务运行。

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 首先我们需要在本地docker中调试运行一遍,再发布到k8s上去. 如果需要在本地部署k8s环境,可以使用mimnikube,参考:https://b ...

  3. K8s系列之:DNS服务搭建指南

    K8s系列之:DNS服务搭建指南 一.skydns配置文件说明 二.修改每台Node上的kubelet启动参数 三.创建skydns RC和Service 四.通过DNS查找Service 五.DNS ...

  4. 4g网络设置dns地址_上网速度慢,修改一下win10系统的DNS设置,网速飙升

    无论何时申请上网服务,互联网服务提供商(ISP)都会提供所需的网络设置(包括域名系统(DNS)地址),用户可以使用这些设置来加载喜欢的网站.访问在线服务以及下载文件.但是,它们的DNS服务器往往速度较 ...

  5. dhcp服务器修改dns设置方法,dhcp服务器的dns设置方法

    dhcp服务器的dns设置方法 内容精选 换一换 文件系统与服务器的连接断开,需要重新挂载.没有配置自动挂载,重启服务器后会自动断开.参考自动挂载文件系统,在云服务器设置重启时进行自动挂载.如果上述方 ...

  6. OpenWrt之DNS设置

    文章目录 OpenWrt之DNS设置 0.前言 1.WAN口 2.Lan口 3.LAN口DHCP选项 4.DHCP/DNS 5.总结 参考(Thanks) 附录.DHCP OPTION OpenWrt ...

  7. 本地连接-IP和DNS设置

    本地连接-IP和DNS设置: 自定义 IP和DNS 地址, 一般自己拉宽带的 不用设置(自动获取IP和DNS),有时连不上网 可能会设置一下 DNS 地址(电信或者网通或者铁通等提供给你的 地址): ...

  8. k8s自定义controller三部曲之二:自动生成代码

    本文是<k8s自定义controller三部曲>的第二篇,上一篇我们在k8s环境注册了API对象Student,此时如果创建Student对象就会在etcd保存该对象信息: 三部曲所有文章 ...

  9. 教程get | K8S部署OpenStack容器云(下)

    如何借助OpenStack Kolla-K8S项目,通过K8S对OpenStack进行容器化部署?并最终部署一套All-In-One类型的OpenStack容器云?让我们继续部署: 部署kolla-k ...

最新文章

  1. 数组随机抽取 java_Java利用数组随机抽取幸运观众如何实现
  2. 通过连接实例解读TCP/IP协议
  3. cmakelist官方教程_CMakeLists.txt文件如何编写?(一 基础篇)
  4. [云炬创业管理笔记]第二章测试4
  5. 批处理——服务器的web文件备份
  6. Json字符串和Json对象的简单总结
  7. IDEA报错 com.microsoft.sqlserver.jdbc.SQLServerException : 列名或所提供的数目与表定于不匹配
  8. C#设计模式之十八状态模式(State Pattern)【行为型】
  9. sshpass-Linux命令之非交互SSH密码验证
  10. RBF神经网络参数的参数优化(进化算法)+Matlab源码
  11. NTP/PTP时间同步入门
  12. 计算机毕业设计ssm基于HTML5的环保公益网站d4sf1系统+程序+源码+lw+远程部署
  13. ipadpro画流程图_Paper 推出适用于快速制作流程图的 Think 套件
  14. 简述与机器学习相关的十大常用Python库,极简化算法编程
  15. 图形界面介绍Create Route Blockage
  16. java 的简单代码_绝对最简单(Java代码)
  17. 从参数到使用体验,家用电视机选购攻略奉上
  18. 清风数学建模——插值算法
  19. ec11编码器c语言程序,EC11旋转编码器电路和程序
  20. IBM System x3850 X5如何级联

热门文章

  1. Flink: CEP详解
  2. matlab拟合韦布尔分布,MATLAB绘制威布尔分布曲线
  3. 论文笔记:REV2: Fraudulent User Prediction in Rating Platforms
  4. (计网实验1)HTTP 代理服务器的设计与实现
  5. 第860题 柠檬水找零
  6. android开发工具简介及下载地址
  7. java axis 拒绝连接_java – org.apache.axis2.AxisFault连接被拒绝
  8. ARCGIS前端--读取excel数据并在地图上显示
  9. C# 中 TextBox 换行的方法
  10. RabbitMQ消息分发模式----Topic主题模式