阿里云Kubernetes集群的虛擬節點已經支持服務發現功能,目前支持Intranet service、Headless service、ClusterIP service。
前提條件
- 需要先開通云解析PrivateZone,在云解析DNS控制臺中開通。
- 您在Kubernetes集群創建一個虛擬節點,請參見通過部署ACK虛擬節點組件創建ECI Pod。
- 您已成功連接到Kubernetes集群,請參見獲取集群KubeConfig并通過kubectl工具連接集群。
環境準備
通過Chart部署虛擬節點后,需要確認已正確配置相關環境變量。
- 登錄容器服務管理控制臺。
- 在控制臺左側導航欄,選擇 。
- 在應用市場頁面單擊應用目錄頁簽,然后搜索并選中ack-virtual-node。
- 在ack-virtual-node頁面,單擊一鍵部署。
- 在創建面板中,選擇集群和命名空間,然后單擊下一步。
- 在參數配置頁面,設置相應參數,然后單擊確定。
ECI_VPC
:Kubernetes集群使用的VPC ID,需要替換成您當前集群使用的VPC ID。ALIYUN_CLUSTERID
:Kubernetes集群ID,需要替換成您當前使用集群的ID。不允許為空或者設置為default。
操作步驟
- 部署Deployment和創建Service。
樣例模板如下所示,在YAML文件中復制如下YAML代碼,然后執行
kubectl create -f nginx-service-ack.yaml
命令進行創建。apiVersion: v1 kind: Service metadata: name: nginx-headless-service annotations: service.beta.kubernetes.io/alibaba-cloud-private-zone-enable: "true" spec: ports: - port: 80 protocol: TCP selector: app: nginx clusterIP: None --- apiVersion: v1 kind: Service metadata: name: nginx-clusterip-service annotations: service.beta.kubernetes.io/alibaba-cloud-private-zone-enable: "true" 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 service.beta.kubernetes.io/alibaba-cloud-private-zone-enable: "true" 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
說明 Kubernetes集群中的Service默認是不會同步到PrivateZone,需要給Service加上以下信息:
此時,虛擬節點Controller才會把Service的解析記錄同步到PrivateZone中。annotations: service.beta.kubernetes.io/alibaba-cloud-private-zone-enable: "true"
- 登錄云解析DNS控制臺。
- 在左側導航欄中單擊PrivateZone,在權威Zone頁簽,可看到在Zone中自動生成IP解析記錄。
- 在目標Zone右側單擊解析設置,彈出解析設置詳情頁面。說明 Zone里面的Record格式為
$svc.$ns
,對應相應的IP解析。解析規則如下:- LoadBalancer service:PrivateZone中只對應一條解析Record,為SLB IP。
- ClusterIP service:PrivateZone中對應多條解析Record,分別為后端Pod的IP。
- Headless service:PrivateZone中對應多條解析Record,分別為后端Pod的IP。
您可在該VPC網絡環境中通過私有域名訪問Service。- 長域名訪問:
$svc.$ns.svc.cluster.local.$clusterId
,通過這種方式也可以訪問其他集群中同步到PrivateZone的service。 - 短域名訪問:您可以通過
$svc
訪問本Namespace下的Service,通過$svc.$ns
訪問其他Namespace中的Service。
文檔內容是否對您有幫助?