云容器引擎 CCE-工作负载DNS配置说明:工作负载的DNS配置实践
工作负载的DNS配置实践
前面介绍了Linux系统 域名 解析文件以及Kubernetes为应用提供的DNS相关配置项,下面将举例介绍应用如何进行DNS配置。
- 场景1 对接kubernetes内置的Kube-DNS/CoreDNS
场景说明:
这种方式适用于应用中的域名解析只涉及集群内部域名,或者集群内部域名+外部域名两种方式,应用默认采用这种配置。
示例:
apiVersion: v1kind: Podmetadata: namespace: default name: dns-examplespec: containers: - name: test image: nginx:alpine dnsPolicy: ClusterFirst
该配置下容器的域名解析文件将如下所示:
nameserver 10.247.3.10search default.svc.cluster.local svc.cluster.local cluster.localoptions ndots:5
- 场景2 直接对接云DNS
场景说明:
这种方式适用于应用只访问注册到互联网的外部域名,该场景不能解析集群内部域名。
示例:
apiVersion: v1kind: Podmetadata: namespace: default name: dns-examplespec: containers: - name: test image: nginx:alpine dnsPolicy: Default //使用kubelet的“--resolv-conf”参数指向的域名解析文件(CCE集群在该配置下对接云DNS)
该配置下容器的域名解析文件将如下所示:
nameserver 100.125.x.x
- 场景3 主机网络模式的应用对接Kube-DNS/CoreDNS
场景说明:
对于配置主机网络模式的应用,默认对接云DNS,如果应用需要对接Kube-DNS/CoreDNS,需将dnsPolicy设置为“ClusterFirstWithHostNet”。
示例:
apiVersion: v1kind: Podmetadata: name: nginxspec: hostNetwork: true dnsPolicy: ClusterFirstWithHostNet containers: - name: nginx image: nginx:alpine ports: - containerPort: 80
该配置下容器的域名解析文件将如下所示:
nameserver 10.247.3.10search default.svc.cluster.local svc.cluster.local cluster.localoptions ndots:5
- 场景4 自定义应用的域名配置
场景说明:
用户可以完全自定义配置应用的域名解析文件,这种方式非常灵活,dnsPolicy和dnsConfig配合使用,几乎能够满足所有使用场景,如对接用户自建DNS的场景、串联多个DNS的场景以及优化DNS配置选项的场景等等。
示例1:对接用户自建DNS
该配置下,dnsPolicy为“None”,应用的域名解析文件完全根据dnsConfig配置生成。
apiVersion: v1kind: Podmetadata: namespace: default name: dns-examplespec: containers: - name: test image: nginx:alpine dnsPolicy: "None" dnsConfig: nameservers: - 10.2.3.4 //用户自建DNS的IP地址 searches: - ns1.svc.cluster.local - my.dns.search.suffix options: - name: ndots value: "2" - name: timeout value: "3"
该配置下容器的域名解析文件将如下所示:
nameserver 10.2.3.4search ns1.svc.cluster.local my.dns.search.suffixoptions timeout:3 ndots:2
示例2:修改域名解析文件的ndots选项,减少无效的DNS查询
该配置下,dnsPolicy不为“None”,会在基于dnsPolicy生成的域名解析文件的基础上,追加dnsConfig中配置的dns参数。
apiVersion: v1kind: Podmetadata: namespace: default name: dns-examplespec: containers: - name: test image: nginx:alpine dnsPolicy: "ClusterFirst" dnsConfig: options: - name: ndots value: "2" //该配置会将基于ClusterFirst策略生成的域名解析文件的ndots:5参数改写为ndots:2
该配置下容器的域名解析文件将如下所示:
nameserver 10.247.3.10search default.svc.cluster.local svc.cluster.local cluster.localoptions ndots:2