如果您希望在自訂的一個或多個專用網路中將私人網域名稱映射到IP資源地址,同時在其他網路環境中無法訪問您的私人網域名稱,可以使用雲解析PrivateZone的服務發現功能。阿里雲Container Service Serverless 版支援的服務發現功能是基於阿里雲Virtual Private Cloud(Virtual Private Cloud)環境的私人網域名稱解析和管理服務,目前支援Intranet service、Headless service、ClusterIP service。
前提條件
已在Alibaba Cloud DNS控制台中開通雲解析PrivateZone。
請選擇合適的地區。PrivateZone目前未在中東東部1(杜拜)地區開服。
已建立ACK Serverless叢集,並確保已啟用PrivateZone組件。
方式一:對於建立的ACK Serverless叢集,您可以在建立叢集時,指定PrivateZone作為DNS服務發現,啟用PrivateZone組件。
方式二:對於已建立的ACK Serverless叢集,您可以在
eci-profile
配置項中設定enablePrivateZone
參數值為true
,啟用PrivateZone組件。
費用說明
PrivateZone的收費規則,請參見產品定價。
操作步驟
部署Deployment和建立Service。
範例模板如下所示,在YAML檔案中複製如下的YAML代碼,然後執行
kubectl create -f nginx-service.yaml
命令進行建立。apiVersion: v1 kind: Service metadata: name: nginx-headless-service spec: ports: - port: 80 protocol: TCP selector: app: nginx clusterIP: None --- apiVersion: v1 kind: Service metadata: name: nginx-clusterip-service spec: ports: - port: 80 protocol: TCP selector: app: nginx type: ClusterIP --- apiVersion: v1 kind: Service metadata: name: nginx-intranet-service annotations: service.beta.kubernetes.io/alicloud-loadbalancer-address-type: intranet spec: ports: - port: 80 protocol: TCP selector: app: nginx type: LoadBalancer --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:alpine ports: - containerPort: 80
執行以下命令,查看應用的健全狀態。
kubectl get svc,pod,deployment
登入到 Alibaba Cloud DNS控制台。
在左側導覽列單擊內網DNS解析(PrivateZone),在右上方選擇管理配置模式,再單擊內建權威,在此頁簽下單擊使用者網域名稱。
在使用者網域名稱頁簽,單擊目標網域名稱操作列的解析記錄。
說明Zone裡面的Record格式為
$svc.$ns
,對應相應的IP解析。解析規則如下:LoadBalancer service:PrivateZone中只對應一條解析Record,為SLB IP。
ClusterIP service:PrivateZone中只對應一條解析Record,為Cluster IP。
Headless service:PrivateZone中對應多條解析Record,分別為後端Pod的IP。
您可在該VPC網路環境中通過私人網域名稱訪問Service。
長網域名稱訪問:
$svc.$ns.svc.cluster.local.$clusterId
,通過這種方式也可以訪問其他叢集中同步到PrivateZone的Service。短網域名稱訪問:您可以通過
$svc
訪問本Namespace下的Service,通過$svc.$ns
訪問其他Namespace中的Service。
更多資訊,請參見serverless-k8s-examples。
相關文檔
ACK Serverless叢集除了可以選擇PrivateZone,也可以選擇CoreDNS作為DNS伺服器(二者選其一即可)。具體操作,請參見ACK Serverless叢集中DNS網域名稱解析原理。