全部產品
Search
文件中心

Container Service for Kubernetes:虛擬節點雲端式解析PrivateZone的服務發現

更新時間:Jul 26, 2025

ACK虛擬節點已支援雲端式解析PrivateZone的服務發現功能,能夠將Headless、ClusterIP和內網LoadBalancer類型Service的解析記錄同步到PrivateZone。本文介紹如何啟用PrivateZone,以及如何將ECI Pod綁定的Service的解析記錄同步到PrivateZone,以便後續可以通過網域名稱訪問對應Service。

背景資訊

雲解析PrivateZone(內網DNS解析)是面向企業內網情境(主要為阿里雲VPC內網情境)提供的完整DNS解析服務,可以為雲上客戶在VPC內網環境下的各種用戶端(如ECS主機、容器)提供網域名稱解析、內網網域名稱解析加速等服務。使用PrivateZone會產生費用,具體請參見產品計費

前提條件

啟用PrivateZone

  1. 修改eci-profile的配置,啟用PrivateZone。

    1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

    2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇組態管理 > 配置項

    3. 選擇命名空間kube-system,找到eci-profile,然後單擊對應的編輯

    4. enablePrivateZone的值改為true,然後單擊確定

  2. 確認已啟用PrivateZone。

    1. Alibaba Cloud DNS控制台的左側導覽列,單擊內網網域名稱解析

    2. 內建權威頁簽的使用者網域名稱頁簽下,確認已產生名稱為svc.cluster.local.<叢集ID>的Zone。

同步Service的解析記錄到PrivateZone

  1. 建立用於測試的Deployment和Service。

    1. 將以下YAML內容,儲存為test-pz.yaml。

      以下YAML將建立1個Deployment和3個Service,其中Service的類型分別為Headless、ClusterIP和LoadBalancer。

      重要

      Service的解析記錄預設不會同步到PrivateZone。為Service添加service.beta.kubernetes.io/alibaba-cloud-private-zone-enable: "true"的Annotation後,虛擬節點Controller才會把Service的解析記錄同步到PrivateZone中。

      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/alibaba-cloud-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
              alibabacloud.com/eci: "true"          # 添加特定Lable將Pod調度到ECI
          spec:
            containers:
            - name: nginx
              image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
              ports:
              - containerPort: 80
    2. 建立Deployment和Service。

      kubectl create -f test-pz.yaml
  2. 確認Service的解析記錄已同步到PrivateZone中。

    1. Alibaba Cloud DNS控制台的左側導覽列,單擊內網網域名稱解析

    2. 內建權威頁簽的使用者網域名稱頁簽下,找到名稱為svc.cluster.local.<叢集ID>的Zone,單擊對應的解析設定

    3. 解析記錄頁簽下,可以看到已自動同步Service的解析記錄。

      Zone中解析記錄格式為<service-name>.<namespace>,對應相應的IP解析。解析規則如下:

      • Headless Service:對應多條解析記錄,分別為後端Pod的IP地址。

      • ClusterIP Service:對應一條解析記錄,為Cluster IP(叢集為該Service分配的一個虛擬IP地址,用於叢集內部通訊)。

      • LoadBalancer Service:對應一條解析記錄,為Cluster IP(叢集為該Service分配的一個虛擬IP地址,用於叢集內部通訊)。

      service解析記錄

      同步後,您可以在VPC環境中通過私人網域名稱訪問Service。

      • 短網域名稱訪問:在叢集內通過<service-name>訪問本Namespace下的Service,通過<service-name>.<namespace>訪問其他Namespace中的Service。

      • 長網域名稱訪問:在叢集外通過<service-name>.<namespace>.svc.cluster.local.<clusterId>訪問Service,僅適用於Headless Service。