文档

为ECI Pod配置自定义DNS

更新时间:

混合云场景下,如果需要使用内网的镜像仓库来拉取镜像,或者容器需要访问内网中的域名,则需要配置ECI Pod使用的DNS为用户内网DNS,以便解析内网域名。本文介绍如何为ECI Pod配置自定义DNS。

背景信息

混合云场景下,例如Kubernetes集群包含本地节点,镜像仓库在本地的情况下,如果使用集群的DNS,可能会因为无法解析内网域名而导致Pod无法访问本地的内网环境。因此,ECI支持了配置自定义DNS功能,您可以为ECI Pod配置自定义DNS来解析内网域名,满足访问本地内网的需求。

配置说明

您可以在Pod metadata中添加k8s.aliyun.com/eci-custom-dnsconfig的Annotation来指定ECI Pod使用自定义DNS。该Annotation的取值格式为{\"nameservers\":\"20.1.xx.xx,20.1.xx.xx\",\"searches\":\"xx.com,xx.eee\",\"options\":\"ndots:2,edns0\"}。各字段说明如下:

字段

说明

nameservers

DNS服务器的IP地址列表。仅支持填入2个IP地址,多余的会自动忽略。

同时,系统会在最后自动追加阿里云DNS服务器的IP地址,以保证系统服务正常。

searches

DNS搜索域列表。最多允许32个。

进行域名解析时,如果输入的域名不完整,系统会自动尝试使用该列表中的域名后缀来补全并进行解析。

options

DNS解析选项。可包含多个KV值。以下为一些常见选项:

  • ndots:设置DNS在主机名中必须至少包含多少个点号(.)才会将其视为绝对域名,否则会尝试在搜索域中进行解析。

  • edns0:开启EDNS0扩展支持,以支持更大的UDP数据包大小和提高安全性。

  • timeout:设置DNS查询超时时间。

  • attempts:设置DNS查询尝试次数。

配置示例如下:

说明

请根据自身业务需求为Pod配置dnsPolicy,建议配置dnsPolicyDefault,表示Pod继承所在节点的DNS配置。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx-test
      labels:
        app: nginx
        alibabacloud.com/eci: "true" 
      annotations:
        k8s.aliyun.com/eci-custom-dnsconfig: "{\"nameservers\":\"20.1.xx.xx,20.1.xx.xx\",\"searches\":\"xx.com,xx.eee\",\"options\":\"ndots:2,edns0\"}"
    spec:
      dnsPolicy: Default  
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80

相关文档

如需了解更多关于DNS配置的信息,请参见DNS概述