基于云解析PrivateZone的服務(wù)發(fā)現(xiàn)
如果您希望在自定義的一個(gè)或多個(gè)專(zhuān)有網(wǎng)絡(luò)中將私有域名映射到IP資源地址,同時(shí)在其他網(wǎng)絡(luò)環(huán)境中無(wú)法訪問(wèn)您的私有域名,可以使用云解析PrivateZone的服務(wù)發(fā)現(xiàn)功能。阿里云容器服務(wù) Serverless 版支持的服務(wù)發(fā)現(xiàn)功能是基于阿里云專(zhuān)有網(wǎng)絡(luò)VPC(Virtual Private Cloud)環(huán)境的私有域名解析和管理服務(wù),目前支持Intranet service、Headless service、ClusterIP service。
前提條件
已在云解析DNS控制臺(tái)中開(kāi)通云解析PrivateZone。
已創(chuàng)建ACK Serverless集群,并確保已啟用PrivateZone組件。
方式一:對(duì)于新建的ACK Serverless集群,您可以在創(chuàng)建集群時(shí),指定PrivateZone作為DNS服務(wù)發(fā)現(xiàn),啟用PrivateZone組件。
方式二:對(duì)于已創(chuàng)建的ACK Serverless集群,您可以在
eci-profile
配置項(xiàng)中設(shè)置enablePrivateZone
參數(shù)值為true
,啟用PrivateZone組件。
費(fèi)用說(shuō)明
PrivateZone的收費(fèi)規(guī)則,請(qǐng)參見(jiàn)產(chǎn)品定價(jià)。
操作步驟
部署Deployment和創(chuàng)建Service。
樣例模板如下所示,在YAML文件中復(fù)制如下的YAML代碼,然后執(zhí)行
kubectl create -f nginx-service.yaml
命令進(jìn)行創(chuàng)建。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
執(zhí)行以下命令,查看應(yīng)用的運(yùn)行狀況。
kubectl get svc,pod,deployment
登錄到 云解析DNS控制臺(tái)。
在左側(cè)導(dǎo)航欄單擊內(nèi)網(wǎng)DNS解析(PrivateZone),在右上角選擇管理配置模式,再單擊內(nèi)置權(quán)威,在此頁(yè)簽下單擊用戶(hù)域名。
在用戶(hù)域名頁(yè)簽,單擊目標(biāo)域名操作列的解析記錄。
說(shuō)明Zone里面的Record格式為
$svc.$ns
,對(duì)應(yīng)相應(yīng)的IP解析。解析規(guī)則如下:LoadBalancer service:PrivateZone中只對(duì)應(yīng)一條解析Record,為SLB IP。
ClusterIP service:PrivateZone中只對(duì)應(yīng)一條解析Record,為Cluster IP。
Headless service:PrivateZone中對(duì)應(yīng)多條解析Record,分別為后端Pod的IP。
您可在該VPC網(wǎng)絡(luò)環(huán)境中通過(guò)私有域名訪問(wèn)Service。
長(zhǎng)域名訪問(wèn):
$svc.$ns.svc.cluster.local.$clusterId
,通過(guò)這種方式也可以訪問(wèn)其他集群中同步到PrivateZone的Service。短域名訪問(wèn):您可以通過(guò)
$svc
訪問(wèn)本Namespace下的Service,通過(guò)$svc.$ns
訪問(wèn)其他Namespace中的Service。
更多信息,請(qǐng)參見(jiàn)serverless-k8s-examples。
相關(guān)文檔
ACK Serverless集群除了可以選擇PrivateZone,也可以選擇CoreDNS作為DNS服務(wù)器(二者選其一即可)。具體操作,請(qǐng)參見(jiàn)ACK Serverless集群中DNS域名解析原理。