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

:ACK オートモードクラスターでのワークロードのデプロイと負荷分散の実装

最終更新日:Jun 22, 2026

このトピックでは、Container Service for Kubernetes (ACK) オートモードクラスターにワークロードをデプロイし、ALB Ingress を使用してインターネットに公開する方法を説明します。これらの手順を完了すると、指定されたドメイン名でアプリケーションにアクセスし、効率的な外部トラフィック管理と負荷分散を実現できます。

このトピックでは、次の操作について説明します。

  1. サンプルアプリケーション用の名前空間を作成します。

  2. サンプルの Nginx アプリケーションをデプロイし、Service を作成してアプリケーションをクラスターネットワークに公開します。

  3. ALB Ingress を作成して、アプリケーションをインターネットに公開します。手動で ALB インスタンスを管理するための AlbConfig を作成し、AlbConfig に関連付ける IngressClass を作成する必要があります。

  4. デプロイが成功したことを確認し、ブラウザーからアプリケーションにアクセスします。不要になったリソースは解放できます。

これらの操作を完了すると、次のようになります。

  • 2 つのレプリカを持つ、実行中のサンプル Nginx アプリケーション。

  • ALB Ingress と Service が提供する、アプリケーション用の安定したパブリックエントリーポイント。

  • ACK オートモードがアプリケーションの負荷に基づいてリソースを自動的にスケーリングし、ノードライフサイクルを管理するため、運用オーバーヘッドが削減されます。

前提条件

ステップ 1:名前空間の作成

このチュートリアル用のリソースを分離するために、名前空間を作成します。

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

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[名前空間とクォータ] をクリックします。

  3. 作成する をクリックします。表示されるダイアログボックスで、カスタム名前空間名 (このトピックでは my-nginx-namespace を例として使用します) を入力し、ページのプロンプトに従って他の設定を行い、OK をクリックします。

ステップ 2:Nginx アプリケーションと Service のデプロイ

このセクションでは、my-nginx という名前のサンプルの Nginx Deployment と my-nginx-svc という名前の Service をデプロイして、アプリケーションを公開します。

  • Deployment:2 つのレプリカ。イメージはサンプルの Nginx アプリケーションを使用します。ポート 80 は HTTP トラフィックを受信するために公開されます。

  • Service:Service タイプは ClusterIP です。Service ポート 80 は Pod コンテナーポート 80 にマッピングされます。Service はラベルセレクターを使用して Pod を照合します。

このセクションでは、サンプル手順のみを説明します。ワークロードと Service を作成する詳細な手順については、「ワークロードの作成」および「Service 管理」をご参照ください。
  1. 次の内容で my-nginx.yaml という名前のファイルを作成し、Deployment と Service をデプロイします。

    apiVersion: apps/v1 
    kind: Deployment
    metadata:
      name: my-nginx    # サンプルアプリケーションの名前。
      namespace: my-nginx-namespace  # 作成した名前空間の名前に置き換えます。
      labels:
        app: nginx
    spec:
      replicas: 2       # レプリカの数。
      selector:
        matchLabels:
          app: nginx     # このアプリケーションを公開するには、値が Service のセレクターと一致する必要があります。
      template:
        metadata:
          labels:
            app: nginx
        spec:
        #  nodeSelector:
        #    env: test-team
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80         # このポートは Service で公開する必要があります。
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: nginx
      name: my-nginx-svc
      namespace: my-nginx-namespace  # 作成した名前空間の名前に置き換えます。
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: nginx
      type: ClusterIP   # Flannel を使用する場合は、NodePort を使用する必要があります。
  2. Deployment と Service をデプロイします。

    kubectl apply -f my-nginx.yaml
  3. Deployment と Service のステータスを確認します。

    • Deployment のステータスを確認します。

      kubectl get deployment my-nginx -n my-nginx-namespace

      期待される出力:

      NAME       READY   UP-TO-DATE   AVAILABLE   AGE
      my-nginx   2/2     2            2           4m36s
    • Service のステータスを確認します。

      kubectl get svc my-nginx-svc -n my-nginx-namespace

      期待される出力:

      NAME           TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)   AGE
      my-nginx-svc   ClusterIP   192.XX.XX.164   <none>        80/TCP    42s

ステップ 3:ALB Ingress と関連リソースの作成

ALB Ingress を使用してクラスター内のアプリケーションにアクセスする外部トラフィックを管理するには、次のリソースを準備する必要があります。

ALB Ingress を作成する前に、「ALB Ingress 管理」でその原則と要件について確認することを推奨します。
  • ALB Ingress コントローラー: Ingress リソースを管理するコンポーネント。クラスターでオートモードを有効にすると、 ALB Ingress コントローラーがデフォルトでインストールされます。

  • AlbConfig: ALB Ingress コントローラーによって作成されるカスタムリソース定義 (CRD) であり、 ALB インスタンスの設定を宣言します。各 AlbConfig は 1 つの ALB インスタンスに対応します。ALB インスタンスは、ユーザーリクエストのエントリーポイントであり、リクエストをバックエンドの Service に転送します。

  • IngressClass: ALB Ingress を作成するときに、この IngressClass を指定して、対応する AlbConfig を参照できます。これにより、特定のアプリケーションルーティング設定と負荷分散ポリシーを適用できます。

AlbConfig の作成

  1. 次の内容で alb.yaml という名前のファイルを作成し、AlbConfig を作成します。

    • この AlbConfig は、addressTypeInternet に設定します。これは、ALB インスタンスにパブリック IP アドレスが割り当てられ、その DNS ドメイン名がパブリック IP アドレスに解決され、インスタンスがインターネットからアクセス可能になることを意味します。

    • vSwitchId には、2 つの異なるゾーンにある vSwitch の ID を 2 つ入力します。vSwitch は、クラスターと同じ VPC に属し、ALB でサポートされているゾーン内にある必要があります。

      VPC コンソールでは、vSwitch ページで vSwitch ID を取得できます。 vSwitch を作成する必要がある場合は、「vSwitch の作成と管理」をご参照ください。
    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        name: alb
        addressType: Internet  # ロードバランサーのアドレスタイプ。Internet-facing の ALB インスタンスは、インターネット経由でアクセスできます。
        zoneMappings:               
        - vSwitchId: vsw-uf6ccg2a9g71hx8go****  # お使いの vSwitch の ID に置き換えてください。
        - vSwitchId: vsw-uf6nun9tql5t8nh15****  # お使いの vSwitch の ID に置き換えてください。
      listeners:
        - port: 80
          protocol: HTTP
  2. AlbConfig を作成します。

    kubectl apply -f alb.yaml
  3. AlbConfig リソースを表示します。

    kubectl get AlbConfig alb

    期待される出力:

    NAME   ALBID        DNSNAME                                  PORT&PROTOCOL   CERTID   AGE
    alb    alb-******   alb-******.<regionID>.alb.aliyuncs.com                            60s
    説明

    PORT&PROTOCOL フィールドと CERTID フィールドは、HTTPS リスナーを作成して証明書を設定した後にのみ入力されます。これらのフィールドが空であることは正常です。

IngressClass の作成

  1. 次の内容で ingress_class.yaml という名前のファイルを作成し、IngressClass を作成します。

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb # IngressClass に関連付ける AlbConfig の名前。
  2. IngressClass を作成します。

    kubectl apply -f ingress_class.yaml

ALB Ingress の作成

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

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ネットワーク] > [Ingress] を選択します。

  3. Ingress ページで、作成した名前空間を選択し、ingress の作成 をクリックします。ingress の作成 ダイアログボックスで、Ingress を設定し、画面の指示に従って Ingress を作成します。

    次の表では、主要なパラメーターのみを説明します。パラメーターや DNS 解決の設定などの関連操作の詳細については、「ALB Ingress の作成」をご参照ください。

    パラメーター

    説明

    [ゲートウェイタイプ]

    ALB Ingress を選択します。

    名前

    Ingress のカスタム名 (my-albingress など) を入力します。

    IngressClass

    対応する AlbConfig を参照するため、作成した IngressClass を選択します。

    ルール

    • []: 宛先 サービスとして、お客様が作成した サービスを選択します。

    • [ポート]:サービス用に公開するポートを選択します。この例では 80 です。

    その他のパラメーターはデフォルト値のままにします。

    Ingress が作成されたら、Ingress ページに戻ります。約 1 分後、 エンドポイント 列から DNS 名を見つけてコピーします。

ステップ 4:アプリケーションへのアクセス

DNS 名をブラウザーに貼り付けて、Nginx アプリケーションにアクセスします。

ブラウザーには、 Welcome to nginx on Anolis OS! というタイトルのデフォルトの Nginx ウェルカムページが表示されます。これは、Web サーバーが期待どおりに実行されており、ALB Ingress の設定が正しく機能していることを示します。

(オプション) ステップ 5:リソースのクリーンアップ

このトピックで作成したリソースには、Deployment、 Service、 AlbConfig、 IngressClass、 ALB Ingress が含まれます。次のコマンドを実行して、リソースをクリーンアップします。

次のコマンドのサンプル名を、実際のリソース名に置き換えてください。
kubectl delete deployment my-nginx -n my-nginx-namespace
kubectl delete service my-nginx-svc -n my-nginx-namespace
kubectl delete ingress my-albingress -n my-nginx-namespace
kubectl delete albconfig alb
kubectl delete ingressclass alb

関連ドキュメント