云容器引擎 CCE-工作负载DNS配置说明:工作负载的DNS配置实践

时间:2023-11-01 16:25:55

工作负载的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
support.huaweicloud.com/usermanual-cce/cce_01_0365.html