混合云場景下,如果需要使用內網的鏡像倉庫來拉取鏡像,或者容器需要訪問內網中的域名,則需要配置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概述。