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

Container Service for Kubernetes:Alibaba Cloud DNS PrivateZone に基づく仮想ノードでのサービスディスカバリ

最終更新日:Nov 09, 2025

ACK 仮想ノードは、Alibaba Cloud DNS PrivateZone に基づくサービスディスカバリをサポートしています。この機能は、Headless、ClusterIP、および内部 LoadBalancer タイプのサービスの DNS レコードを PrivateZone に同期します。このトピックでは、PrivateZone を有効にし、ECI Pod にバインドされたサービスの DNS レコードを PrivateZone に同期して、ドメイン名を使用して対応するサービスにアクセスできるようにする方法について説明します。

背景情報

Alibaba Cloud DNS PrivateZone (内部 DNS 名前解決) は、主に Alibaba Cloud VPC イントラネット環境向けの、企業イントラネットシナリオのための包括的な DNS 名前解決サービスです。VPC イントラネット環境のさまざまなクライアント (ECS インスタンスやコンテナーなど) に、名前解決と内部ドメイン名のアクセラレーションサービスを提供します。PrivateZone の使用には料金が発生します。詳細については、「課金」をご参照ください。

前提条件

PrivateZone の有効化

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

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

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

    3. [名前空間] として [kube-system] を選択し、[eci-profile] を見つけて、[編集] をクリックします。

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

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

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

    2. [カスタムドメイン名] タブの [ビルトイン認証局] タブで、[Svc.cluster.local.<cluster ID>] という名前のゾーンが生成されていることを確認します。

サービスの DNS レコードを PrivateZone に同期する

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

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

      次の YAML は、1 つの Deployment と 3 つのサービスを作成します。サービスの種類は Headless、ClusterIP、LoadBalancer です。

      重要

      デフォルトでは、サービスの DNS レコードは PrivateZone に同期されません。サービスに 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 a specific label to schedule pods to 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 とサービスを作成します。

      kubectl create -f test-pz.yaml
  2. サービスの DNS レコードが PrivateZone に同期されていることを確認します。

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

    2. [カスタムドメイン名] タブの [ビルトイン認証局] タブで、[Svc.cluster.local.<cluster ID>] という名前のゾーンを見つけ、[解決設定] をクリックします。

    3. [DNS レコード] タブで、サービスの DNS レコードが自動的に同期されていることを確認できます。

      ゾーン内の DNS レコードのフォーマットは <service-name>.<namespace> で、それぞれの IP 名前解決に対応します。名前解決のルールは次のとおりです。

      • Headless Service: 複数の DNS レコードに対応し、それぞれがバックエンド Pod の IP アドレスに対応します。

      • ClusterIP Service: 1 つの DNS レコードに対応し、クラスター IP (クラスター内で内部通信を行うためにクラスターがサービスに割り当てた仮想 IP アドレス) に対応します。

      • LoadBalancer Service: 1 つの DNS レコードに対応し、クラスター IP (クラスター内で内部通信を行うためにクラスターがサービスに割り当てた仮想 IP アドレス) に対応します。

      service解析记录

      同期後、VPC 環境でプライベートドメイン名を通じてサービスにアクセスできます。

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

      • 長いドメイン名でのアクセス: クラスター外では、<service-name>.<namespace>.svc.cluster.local.<clusterId> を使用してサービスにアクセスします。これは Headless Service にのみ適用されます。