すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Alibaba Cloud DNS PrivateZone を使用した仮想ノードのサービス検出

最終更新日:Jun 23, 2026

Container Service for Kubernetes (ACK) の仮想ノードは、Alibaba Cloud DNS PrivateZone を使用したサービス検出をサポートしています。この機能は、Headless、ClusterIP、および内部 LoadBalancer Service の DNS レコードを PrivateZone に同期します。このトピックでは、PrivateZone を有効にして ECI Pod に関連付けられた Service の DNS レコードを同期し、ドメイン名でアクセスできるようにする方法について説明します。

背景情報

Alibaba Cloud DNS PrivateZone (内部 DNS 名前解決) は、Alibaba Cloud Virtual Private Cloud (VPC) などのプライベートネットワーク向けに設計された DNS サービスです。VPC 内のクライアント (ECS インスタンスやコンテナなど) がプライベートドメイン名を解決し、解決プロセスを高速化できます。PrivateZone は有料サービスです。詳細については、製品の課金をご参照ください。

前提条件

PrivateZone の有効化

  1. eci-profile ConfigMap を変更して PrivateZone を有効にします。

    1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。

    2. クラスターリスト ページで、対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、設定 > ConfigMap をクリックします。

    3. 名前空間 ドロップダウンリストから kube-system を選択します。eci-profile ConfigMap を見つけ、[操作] 列の 編集 をクリックします。

    4. enablePrivateZone の値を true に変更し、OK をクリックします。

  2. PrivateZone が有効になっていることを確認します。

    1. Alibaba Cloud DNS コンソールの左側のナビゲーションウィンドウで、イントラネットドメイン名の解決 をクリックします。

    2. 組み込みの権限 タブで、User Defined Zones タブを選択します。svc.cluster.local.<cluster-id> という名前のゾーンが作成されていることを確認します。

Service の DNS レコードの PrivateZone への同期

  1. テスト用の Deployment と Service を作成します。

    1. 次の YAML コンテンツを test-pz.yaml として保存します。

      このマニフェストは、1 つの Deployment と、Headless、ClusterIP、内部 LoadBalancer の 3 種類の Service を作成します。

      重要

      デフォルトでは、Service の DNS レコードは同期されません。特定の Service の同期を有効にするには、そのマニフェストに service.beta.kubernetes.io/alibaba-cloud-private-zone-enable: "true" アノテーションを追加します。これにより、仮想ノードコントローラーが自動的にその DNS レコードを 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"          # Add this label to schedule the Pod on 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 の DNS レコードが PrivateZone に同期されていることを確認します。

    1. Alibaba Cloud DNS コンソールの左側のナビゲーションウィンドウで、イントラネットドメイン名の解決 をクリックします。

    2. 組み込みの権限 タブで、User Defined Zones タブを選択します。svc.cluster.local.<cluster-id> という名前のゾーンを見つけ、[操作] 列の 解決設定 をクリックします。

    3. Settings タブで、Service の DNS レコードが自動的に同期されていることを確認します。

      ゾーン内の DNS レコードは <service-name>.<namespace> というフォーマットを使用し、対応する IP アドレスに解決されます。解決ルールは次のとおりです。

      • Headless Service: 複数の DNS レコードに対応し、各バックエンド Pod の IP アドレスごとに 1 つのレコードが作成されます。

      • ClusterIP Service: クラスター IP に解決される単一の DNS レコードに対応します。クラスターは、内部通信のためにこの仮想 IP アドレスを Service に割り当てます。

      • 内部 LoadBalancer Service: 内部 Server Load Balancer (SLB) インスタンスの IP アドレスに解決される単一の DNS レコードに対応します。

      レコードが同期されると、VPC 内からプライベートドメイン名を使用して Service にアクセスできます。

      • 短縮ドメイン名でのアクセス: クラスター内では、同じ名前空間内の Service には <service-name> を使用してアクセスでき、異なる名前空間の Service には <service-name>.<namespace> を使用してアクセスできます。

      • 完全修飾ドメイン名 (FQDN) でのアクセス: クラスター外で同じ VPC 内からは、<service-name>.<namespace>.svc.cluster.local.<cluster-id> を使用して Service にアクセスできます。この方法は Headless Service にのみ適用されます。