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

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

最終更新日:Mar 26, 2026

ACK 仮想ノードは、Alibaba Cloud DNS PrivateZone を介したサービス検出をサポートしています。Service にアノテーションを追加すると、仮想ノードコントローラーが自動的にその DNS レコードを PrivateZone に同期します。これにより、Virtual Private Cloud (VPC) 内の Pod やその他のクライアントが、ドメイン名で Elastic Container Instance (ECI) をバックエンドとする Service にアクセスできるようになります。

対応する Service の種類:ヘッドレス、ClusterIP、および内部 LoadBalancer。

説明

PrivateZone の利用には料金がかかります。料金の詳細については、「課金」をご参照ください。

仕組み

PrivateZone は、VPC 環境向けの非公開 DNS 解決サービスです。ECS インスタンスや VPC 内で実行されるコンテナなど、さまざまなクライアントに対して、ドメイン名の名前解決および内部ドメイン名の高速化サービスを提供します。

仮想ノードクラスターで PrivateZone を有効化すると、仮想ノードコントローラーは svc.cluster.local.<clusterID> という名前の非公開 DNS ゾーンを作成し、アノテーション付きの Service の DNS レコードをこのゾーンに同期します。DNS レコードの形式は <service-name>.<namespace> です。

Service の種類同期される DNS レコード解決先
ヘッドレスバックエンドの各 Pod ごとに 1 件のレコードPod の IP アドレス
ClusterIP1 件のレコードCluster IP(クラスター内通信用の仮想 IP)
内部 LoadBalancer1 件のレコードCluster IP(クラスター内通信用の仮想 IP)

同期後、Service は VPC 内でドメイン名によるアクセスが可能になります:

アクセス範囲ドメイン名の形式適用対象
クラスター内、同一名前空間<service-name>すべての Service の種類
クラスター内、異なる名前空間<service-name>.<namespace>すべての Service の種類
クラスター外(FQDN)<service-name>.<namespace>.svc.cluster.local.<clusterID>ヘッドレス Service のみ

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

PrivateZone の有効化

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

  2. クラスターの名前をクリックします。左側のナビゲーションウィンドウで、[設定][ConfigMap] を選択します。

  3. [名前空間]kube-system に設定し、eci-profile を探し、[編集] をクリックします。

  4. enablePrivateZonetrue に設定し、次に [OK] をクリックします。

  5. ゾーンが正しく作成されたことを確認します。

    1. Alibaba Cloud DNS コンソール」で、左側のナビゲーションウィンドウの [プライベートゾーン] をクリックします。

    2. [権威ゾーン] タブで、[ユーザー定義ゾーン] に移動し、`svc.cluster.local.<cluster ID>` という名前のゾーンが表示されることを確認します。

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

DNS レコードはデフォルトで PrivateZone へ同期されません。Service に対して同期を有効化するには、以下のアノテーションを追加します。

service.beta.kubernetes.io/alibaba-cloud-private-zone-enable: "true"

以下の例では、1 つの Deployment と 3 つの Service(各対応種類 1 つずつ)を作成し、すべてに上記アノテーションを付与します。

  1. 以下の内容を test-pz.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/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"          # 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. マニフェストを適用します。

    kubectl create -f test-pz.yaml
  3. DNS レコードが正しく同期されたことを確認します。

    1. Alibaba Cloud DNS コンソールで、[非公開ゾーン] をクリックします。

    2. ユーザー定義ゾーン」の下で、[権威ゾーン] タブで、「`svc.cluster.local.<クラスターID>`」という名前のゾーンを見つけ、[設定項目] をクリックします。

    3. [設定] タブで、各サービスに 1 つずつ、合計 3 つの DNS レコードが <service-name>.default のフォーマットで表示されていることを確認します: service解析记录

      • nginx-headless-service.default — 各 Pod の IP アドレスごとに複数の A レコード

      • nginx-clusterip-service.default — Cluster IP を指す 1 件の A レコード

      • nginx-intranet-service.default — Cluster IP を指す 1 件の A レコード