接上文:

五、Pod 资源对象配置 DNS 信息

除了使用集群范围的DNS服务(如CoreDNS),在Pod级别也能设置DNS的相关策略和配置。

5.1、DNS 策略配置

在Pod的YAML配置文件中通过 spec.dnsPolicy 字段设置DNS策略,例如:

apiVersion: v1

king: Pod

metadata:

name: nginx

spec:

containers:

- name: nginx

image: nginx

dnsPolicy: Default

目前可以设置的DNS策略如下:

Default:继承Pod所在宿主机的DNS设置。

ClusterFirst:优先使用Kubernetes环境的DNS服务(如CoreDNS提供的域名解析服务),将无法解析的域名转发到从宿主机继承的DNS服务器。

ClusterFirstWithHostNet:与ClusterFirst相同,对于以hostNetwork模式运行的Pod,应明确指定使用该策略。

None:忽略Kubernetes环境的DNS配置,通过spec.dnsConfig自定义DNS配置。这个选项从Kubernetes 1.9版本开始引入,到Kubernetes 1.10版本升级为Beta版,到Kubernetes 1.14版本升级为稳定版。

5.2、DNS 配置设置

自定义DNS配置可以通过 spec.dnsConfig 字段进行设置,可以设置下列信息。

nameservers:一组DNS服务器的列表,最多可以设置3个。

searches:一组用于域名搜索的DNS域名后缀,最多可以设置6个。

options:配置其他可选DNS参数,例如ndots、timeout等,以name或name/value对的形式表示。

以下面的dnsConfig为例:

apiVersion: v1

king: Pod

metadata:

name: dns-example

namespace: default

spec:

containers:

- name: test

image: nginx

dnsPolicy: "None"

dnsConfig:

nameservers:

- 1.2.3.4

searches:

- nsl.svc.cluster.local

- my.dns.search.suffix

options:

- name: ndots

value: "2"

- name: edns0

该Pod被成功创建之后,容器内的DNS配置文件/etc/resolv.conf的内容将被系统设置为:

nameserver 1.2.3.4

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

options ndots:2 edns0

表示该Pod完全使用自定义的DNS配置,不再使用Kubernetes环境的DNS服务。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐