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