混合云场景下,如果需要使用内网的镜像仓库来拉取镜像,或者容器需要访问内网中的域名,则需要配置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值。以下为一些常见选项:
|
配置示例如下:
请根据自身业务需求为Pod配置dnsPolicy
,建议配置dnsPolicy
为Default
,表示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概述。