在默认情况下,系统会自动为pod配置好域名服务器等DNS参数,此外k8s也提供在pod定义中有用户自定义DNS相关配置的方法。这可以通过在pod定义中设置dnsConfig字段进行DNS相关配置,该字段时可选字段。在dnsPolicy为任意策略时都可以设置,但是当dnsPolicy=“None”时必须设置。该特性在1.9版本中被提出,在1.10版本时达到beta阶段并被默认启用,1.14版本达到stable阶段
自定义DNS可以设置以下内容:
- nameservers: 用于域名解析的DNS服务器列表,最多可以设置3个。当pod的dnsPolicy=“None”时,该nameserver列表必须包含至少一个IP地址。配置的nameserver列表会与系统自动设置的nameserver进行去重和合并。
- serarches: 用于域名搜索的DNS域名后缀,最多可以设置6个,也会与系统自动设置的search列表进行合并和去重。
- options: 配置其他可选DNS参数,例如 ndots,timeout等。以name或name/value对的形式表示,也会与系统自动设置的option列表进行合并和去重
案例:
apiVersion: v1
kind: Pod
metadata:
name: tomcat
spec:
containers:
- name: tomcat
image: 192.168.1.6:80/dev/tomcat
ports:
- containerPort: 8080
dnsPolicy: "None"
dnsConfig:
nameservers:
- 223.5.5.5
searches:
- nsl.svc.cluste