k8s 自定义dns_Kubernetes 服务对Pod 设置DNS 信息说明
接上文:五、Pod 资源对象配置 DNS 信息除了使用集群范围的DNS服务(如CoreDNS),在Pod级别也能设置DNS的相关策略和配置。5.1、DNS 策略配置在Pod的YAML配置文件中通过 spec.dnsPolicy 字段设置DNS策略,例如:apiVersion: v1king: Podmetadata:name: nginxspec:containers:- name: nginxi
接上文:
五、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服务。
更多推荐
所有评论(0)