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

Container Compute Service:kubectl を使用した ACS の概要

最終更新日:Jan 27, 2025

Alibaba Cloud Container Compute Service (ACS) は、パフォーマンス専有型コンテナコンピューティングサービスを提供します。 ACS を使用すると、クラウド内のコンテナ化アプリケーションを便利かつ効率的に実行できます。 このトピックでは、kubectl を使用して ACS クラスタにコンテナ化アプリケーションをデプロイ、公開、および監視する方法について説明します。

背景情報

  • このトピックでは、イメージを使用して ACS クラスタに acs-kube という名前のアプリケーションをデプロイする方法を示します。 このアプリケーションは、オンラインマジックキューブゲームを提供します。 このトピックの手順を実行すると、ACS クラスタが作成され、マジックキューブゲームを提供するアプリケーションがデプロイされます。

    image

  • アプリケーションのデプロイに使用されるコンテナイメージは、オープンソースプロジェクトに基づいて構築されています。 イメージアドレスは registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cube です。

  • kubectl は、Kubernetes クラスタに接続して管理するために Kubernetes が提供するコマンドラインツールです。 kubectl の詳細については、「kubectl」をご参照ください。

  • Cloud Shell は、Alibaba Cloud が提供する Web ベースのコマンドラインツールです。 ACS コンソールの Cloud Shell で kubectl を使用して、ACS クラスタを管理できます。 インストールと構成は不要です。

手順

ACS の有効化と権限の付与

ACS を初めて使用する場合は、ACS を有効化し、クラウドリソースにアクセスするための権限を ACS に付与する必要があります。

  1. ACS コンソール にログインし、[有効化] をクリックします。

  2. ACS 有効化 ページに移動し、画面の指示に従って ACS を有効化します。

  3. ACS コンソールに戻り、ページをリフレッシュします。 [今すぐ承認] をクリックします。

  4. ACS 承認ページに移動し、画面の指示に従って ACS に権限を付与します。

    上記の手順が完了したら、ACS コンソールをリフレッシュします。 その後、ACS を使い始めることができます。

ステップ 2: ACS クラスタを作成する

このステップでは、ACS クラスタを作成するときにクラスタパラメータを構成する方法を示します。

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

  2. [クラスタ] ページの左上隅にある [クラスタの作成] をクリックします。

  3. [クラスタの作成] ページで、次の表に示すパラメータを設定します。 表に記載されていないパラメータには、デフォルト設定を使用します。

    パラメータ

    説明

    クラスタ名

    クラスタの名前を入力します。

    ACS-Demo

    リージョン

    クラスタをデプロイするリージョンを選択します。

    中国 (北京)

    VPC

    クラスタのネットワーク。 ACS クラスタは VPC のみをサポートします。 [VPC の作成] または [既存の VPC を選択] を選択できます。

    • [VPC の作成]: このオプションを選択すると、ACK は VPC と VPC 内の NAT ゲートウェイを自動的に作成します。 また、ACK は NAT ゲートウェイで SNAT ルールを構成します。

    • [既存の VPC を選択]: このオプションを選択する場合は、VPC ドロップダウンリストから VPC を選択し、vSwitch セクションで vSwitch を選択する必要があります。 インターネット経由でコンテナイメージをダウンロードする場合は、NAT ゲートウェイを構成する必要があります。 コンテナイメージをクラスタがデプロイされているリージョンの Alibaba Cloud Container Registry にアップロードし、VPC エンドポイントを使用してイメージをプルすることをお勧めします。

    詳細については、「VPC の作成と管理」をご参照ください。

    [VPC の作成] を選択します。

    API サーバーアクセス設定

    クラスタの Kubernetes API サーバーをインターネットに公開するかどうかを指定します。 インターネット経由でクラスタを管理する場合は、Elastic IP Address (EIP) を使用して Kubernetes API サーバーを公開する必要があります。

    [EIP で API サーバーを公開] を選択します。

    サービスディスカバリ

    [詳細オプションを表示] をクリックし、サービスディスカバリを有効にするかどうかを指定します。 サービスディスカバリを有効にするには、[coredns] を選択します。

    [coredns] を選択します。

  4. [注文の確認] をクリックし、利用規約を読んで選択してから、[クラスタの作成] をクリックします。

    説明

    クラスタの作成には約 10 分かかります。 クラスタが作成されると、[クラスタ] ページでクラスタを表示できます。

ステップ 3: クラスタに接続する

このステップでは、kubectl クライアントまたは Cloud Shell を使用して ACS クラスタに接続する方法を示します。 詳細については、「クラスタの kubeconfig ファイルを取得する方法と kubectl を使用してクラスタに接続する方法」および「Cloud Shell で kubectl を使用して ACS クラスタを管理する」をご参照ください。

kubectl クライアントを使用してクラスタに接続する

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

  2. [クラスタ] ページで、作成したクラスタの名前 (この例では ACS-Demo) をクリックします。

  3. [クラスタ情報] ページで、[接続情報] タブをクリックします。 [パブリックアクセス] タブの [コピー] をクリックして、インターネット経由でクラスタにアクセスするために使用される認証情報をコピーします。

  4. 認証情報を $HOME/.kube ディレクトリの config ファイルに貼り付けて、ファイルを保存してから終了します。

    説明

    $HOME/ ディレクトリに .kube フォルダと config ファイルが存在しない場合は、フォルダとファイルを手動で作成する必要があります。

  5. 次の kubectl コマンドを実行して、クラスタの接続性を確認します。

    次のコマンドを実行して、クラスタの名前空間をクエリします。

    kubectl get namespace

    予期される出力:

    NAME              STATUS   AGE
    arms-prom         Active   4h39m
    default           Active   4h39m
    kube-node-lease   Active   4h39m
    kube-public       Active   4h39m
    kube-system       Active   4h39m

Cloud Shell を使用してクラスタに接続する

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

  2. [クラスタ] ページで、作成したクラスタを見つけ、[その他] > [cloud Shell を開く][アクション] 列で を選択します。

    Cloud Shell の起動には数秒かかります。 Cloud Shell が起動したら、Cloud Shell インターフェイスで kubectl コマンドを実行して、クラスタとクラスタにデプロイされたアプリケーションを管理できます。

ステップ 4:アプリケーションのデプロイと公開

このステップでは、kubectl を使用して Deployment を作成することでステートレス アプリケーションをデプロイし、LoadBalancer サービスを使用してアプリケーションを公開する方法を示します。アプリケーションを公開する方法の詳細については、「自動的に作成された SLB インスタンスを使用してアプリケーションを公開する」をご参照ください。

  1. acs-cube.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。

    acs-cube.yaml の内容を表示

    apiVersion: apps/v1 # 1.8.0 より前のバージョンでは apps/v1beta1 を使用します
    kind: Deployment
    metadata:
      name: acs-cube # アプリケーション名。
      labels:
        app: acs-cube
    spec:
      replicas: 2 # レプリケートされたポッドの数。
      selector:
        matchLabels:
          app: acs-cube # この値は、アプリケーションを公開するために使用されるサービスのセレクターと同じである必要があります。
      template:
        metadata:
          labels:
            app: acs-cube
        spec:
          containers:
          - name: acs-cube
            image: registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cube:1.0 # 使用するイメージのアドレスを <image_name:tags> 形式で置き換えます。
            ports:
            - containerPort: 80 # 公開するコンテナー ポート。
            resources:
              limits: # リソース制限を設定します。
                cpu: '1'
                memory: 1Gi
              requests: # リソース要求を設定します。
                cpu: 500m
                memory: 512Mi        
  2. 次のコマンドを実行して、acs-cube アプリケーションをデプロイします。

    kubectl apply -f acs-cube.yaml
  3. 次のコマンドを実行して、アプリケーションのステータスをクエリします。

    kubectl get deployment acs-cube

    予想される出力:

    NAME       READY   UP-TO-DATE   AVAILABLE   AGE
    acs-cube   2/2     2            2           96s
  4. acs-cube-svc.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。

    selector を ack-cube.yaml ファイルの matchLabels の値に設定します。この例では、値は app: ack-cube に設定されています。これにより、アプリケーションがサービスのバックエンドに追加されます。

    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: acs-cube
      name: acs-cube-svc
      namespace: default
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: acs-cube # Deployment の作成に使用された YAML ファイルの matchLabels パラメーターの値を指定する必要があります。
      type: LoadBalancer
  5. 次のコマンドを実行して、ack-cube-svc という名前のサービスを作成し、そのサービスを使用してアプリケーションを公開します。

    ACS はインターネットに接続された Server Load Balancer (SLB) インスタンスを自動的に作成し、SLB インスタンスをサービスに関連付けます。

    kubectl apply -f acs-cube-svc.yaml
  6. 次のコマンドを実行して、LoadBalancer サービスが作成されているかどうかを確認します。

    作成したアプリケーションは、出力の EXTERNAL-IP 列の IP アドレスを使用して公開されます。

    kubectl get svc acs-cube-svc

    予想される出力:

    NAME           TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
    acs-cube-svc   LoadBalancer   172.16.72.161   47.94.xx.xx     80/TCP         32s

手順 5: アプリケーションをテストする

ブラウザのアドレスバーに IP アドレス (EXTERNAL-IP) を入力し、Enter キーを押してマジックキューブゲームを開始します。

image

参考資料

  • アプリケーション ポッドの自動スケーリングを有効にするには、Horizontal Pod Autoscaler (HPA)、Cron Horizontal Pod Autoscaler (CronHPA)、および Vertical Pod Autoscaler (VPA) を構成できます。詳細については、「自動スケーリングの概要」をご参照ください。

  • サービスを介してアプリケーションを公開するだけでなく、Ingress を使用してアプリケーション トラフィック ルーティングをレイヤー 7 で有効にすることもできます。詳細については、「ALB Ingress を使用する」をご参照ください。

  • アプリケーションに関するモニタリング情報を表示するには、クラスタ詳細ページに移動し、左側のナビゲーションウィンドウで [操作] > [Prometheus モニタリング] を選択します。[Prometheus モニタリング] ページで、CPU 使用率、メモリ使用率、ネットワーク I/O などのモニタリング情報を表示できます。詳細については、「Managed Service for Prometheus を使用して ACS クラスタを監視する」をご参照ください。

リソースのリリース

ACS クラスタを使用すると、次の料金が発生します。

  • クラスタ内のワークロードで使用される計算能力の料金。料金は ACS によって課金されます。

  • クラスタで使用される他のクラウドリソースの料金。料金は、Alibaba Cloud サービスによって課金ルールに基づいて課金されます。

ACS クラスタを作成した後は、次の点に注意してください。

  • クラスタを使用する必要がなくなった場合は、クラスタと関連リソースを削除します。詳細については、「ACS クラスタを削除する」をご参照ください。

  • クラスタを維持する必要がある場合は、アカウントの残高が 100 元を下回ったら、アカウントにチャージしてください。Alibaba Cloud サービスの課金ルールの詳細については、「課金」をご参照ください。