k8s 自定义dns_kubernetes 容器 DNS 设置
添加默认配置
在 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 设置相关推荐
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录
0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...
- 将应用制作成镜像发布到服务器k8s上作为容器微服务运行。
全栈工程师开发手册 (作者:栾鹏) 架构系列文章 首先我们需要在本地docker中调试运行一遍,再发布到k8s上去. 如果需要在本地部署k8s环境,可以使用mimnikube,参考:https://b ...
- K8s系列之:DNS服务搭建指南
K8s系列之:DNS服务搭建指南 一.skydns配置文件说明 二.修改每台Node上的kubelet启动参数 三.创建skydns RC和Service 四.通过DNS查找Service 五.DNS ...
- 4g网络设置dns地址_上网速度慢,修改一下win10系统的DNS设置,网速飙升
无论何时申请上网服务,互联网服务提供商(ISP)都会提供所需的网络设置(包括域名系统(DNS)地址),用户可以使用这些设置来加载喜欢的网站.访问在线服务以及下载文件.但是,它们的DNS服务器往往速度较 ...
- dhcp服务器修改dns设置方法,dhcp服务器的dns设置方法
dhcp服务器的dns设置方法 内容精选 换一换 文件系统与服务器的连接断开,需要重新挂载.没有配置自动挂载,重启服务器后会自动断开.参考自动挂载文件系统,在云服务器设置重启时进行自动挂载.如果上述方 ...
- OpenWrt之DNS设置
文章目录 OpenWrt之DNS设置 0.前言 1.WAN口 2.Lan口 3.LAN口DHCP选项 4.DHCP/DNS 5.总结 参考(Thanks) 附录.DHCP OPTION OpenWrt ...
- 本地连接-IP和DNS设置
本地连接-IP和DNS设置: 自定义 IP和DNS 地址, 一般自己拉宽带的 不用设置(自动获取IP和DNS),有时连不上网 可能会设置一下 DNS 地址(电信或者网通或者铁通等提供给你的 地址): ...
- k8s自定义controller三部曲之二:自动生成代码
本文是<k8s自定义controller三部曲>的第二篇,上一篇我们在k8s环境注册了API对象Student,此时如果创建Student对象就会在etcd保存该对象信息: 三部曲所有文章 ...
- 教程get | K8S部署OpenStack容器云(下)
如何借助OpenStack Kolla-K8S项目,通过K8S对OpenStack进行容器化部署?并最终部署一套All-In-One类型的OpenStack容器云?让我们继续部署: 部署kolla-k ...
最新文章
- 数组随机抽取 java_Java利用数组随机抽取幸运观众如何实现
- 通过连接实例解读TCP/IP协议
- cmakelist官方教程_CMakeLists.txt文件如何编写?(一 基础篇)
- [云炬创业管理笔记]第二章测试4
- 批处理——服务器的web文件备份
- Json字符串和Json对象的简单总结
- IDEA报错 com.microsoft.sqlserver.jdbc.SQLServerException : 列名或所提供的数目与表定于不匹配
- C#设计模式之十八状态模式(State Pattern)【行为型】
- sshpass-Linux命令之非交互SSH密码验证
- RBF神经网络参数的参数优化(进化算法)+Matlab源码
- NTP/PTP时间同步入门
- 计算机毕业设计ssm基于HTML5的环保公益网站d4sf1系统+程序+源码+lw+远程部署
- ipadpro画流程图_Paper 推出适用于快速制作流程图的 Think 套件
- 简述与机器学习相关的十大常用Python库,极简化算法编程
- 图形界面介绍Create Route Blockage
- java 的简单代码_绝对最简单(Java代码)
- 从参数到使用体验,家用电视机选购攻略奉上
- 清风数学建模——插值算法
- ec11编码器c语言程序,EC11旋转编码器电路和程序
- IBM System x3850 X5如何级联
热门文章
- Flink: CEP详解
- matlab拟合韦布尔分布,MATLAB绘制威布尔分布曲线
- 论文笔记:REV2: Fraudulent User Prediction in Rating Platforms
- (计网实验1)HTTP 代理服务器的设计与实现
- 第860题 柠檬水找零
- android开发工具简介及下载地址
- java axis 拒绝连接_java – org.apache.axis2.AxisFault连接被拒绝
- ARCGIS前端--读取excel数据并在地图上显示
- C# 中 TextBox 换行的方法
- RabbitMQ消息分发模式----Topic主题模式