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

Container Service for Kubernetes:PrivateZone を使用したサービス検出

最終更新日:Mar 26, 2026

Alibaba Cloud DNS PrivateZone は、1 つ以上の VPC (Virtual Private Cloud) 内のプライベートドメイン名を IP アドレスにマッピングし、これらの VPC の外部からのアクセスをブロックします。ACK Serverless は PrivateZone と統合されており、クラスター内の各サービスに安定した DNS 名を提供するため、IP の追跡は不要です。

PrivateZone ベースのサービス検出は、イントラネットサービス、ヘッドレスサービス、ClusterIP サービスの 3 種類のサービスをサポートしています。

説明

CoreDNS ベースのアプローチをご希望の場合は、「ACK Serverless クラスターでの DNS 名前解決の仕組み」をご参照ください。

前提条件

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

  • Alibaba Cloud DNS コンソールで Alibaba Cloud DNS PrivateZone が有効化されていること

    説明

    PrivateZone は UAE (ドバイ) リージョンでは利用できません。

  • PrivateZone コンポーネントを有効にして作成された ACK Serverless クラスター。 以下のいずれかの方法を使用します:

    • 新規クラスター: クラスターを作成する際に、[PrivateZone][サービス検出] パラメーターとして選択します。 image.png

    • 既存のクラスター: eci-profile ConfigMap の enablePrivateZone パラメーターを true に設定します。

  • クラスターに接続された kubectl クライアント

課金

PrivateZone の料金詳細については、「料金」をご参照ください。

仕組み

PrivateZone は、$svc.$ns フォーマットで DNS レコードを作成します。各サービスタイプは、異なる DNS レコード構造にマッピングされます:

サービスタイプレコード数解決先
LoadBalancer (イントラネット)1SLB インスタンスの IP アドレス
ClusterIP1クラスター IP アドレス
ヘッドレス複数すべてのバックエンド Pod の IP アドレス

レコードが作成されると、VPC 内の Pod はプライベートドメイン名を使用して任意のサービスにアクセスできます。

ドメイン名のフォーマット:

フォーマットスコープ
$svc同じ名前空間nginx
$svc.$ns異なる名前空間nginx.prod
$svc.$ns.svc.cluster.local.$clusterId現在のクラスター (完全名);クラスター間のアクセスにも使用可能nginx.prod.svc.cluster.local.c1a2b3

PrivateZone を使用したサービス検出の有効化

ステップ 1: Deployment のデプロイとサービスの作成

以下の YAML を nginx-service.yaml として保存し、kubectl create -f nginx-service.yaml を実行します。

apiVersion: v1
kind: Service
metadata:
  name: nginx-headless-service
spec:
  ports:
  - port: 80
    protocol: TCP
  selector:
    app: nginx
  clusterIP: None
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-clusterip-service
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
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

ステップ 2: リソースの実行確認

kubectl get svc,pod,deployment

次に進む前に、3 つすべてのサービスと Deployment の Pod が期待されるステータスで表示されていることを確認します。

ステップ 3: コンソールでの PrivateZone レコードの表示

  1. Alibaba Cloud DNS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[プライベート DNS (PrivateZone)] をクリックします。

  3. ページ右上で、[設定モード] をクリックします。

  4. [ビルトイン権威モジュール] タブをクリックし、次に [ユーザー定義ゾーン] をクリックします。

  5. 確認したいドメインの[操作]列で、[リソースレコード設定]をクリックします。

コンソールには、PrivateZone がサービス用に作成した DNS レコードが表示されます。「仕組み」の表に基づいて、各サービスに正しい数のエントリとターゲット IP アドレスがあることを確認します。

次のステップ

追加の例や詳細設定については、「serverless-k8s-examples」をご参照ください。