Alibaba Cloud Container Compute Service (ACS) は、パフォーマンス専有型コンテナコンピューティングサービスを提供します。 ACS を使用すると、クラウド内のコンテナ化アプリケーションを便利かつ効率的に実行できます。 このトピックでは、kubectl を使用して ACS クラスタにコンテナ化アプリケーションをデプロイ、公開、および監視する方法について説明します。
背景情報
このトピックでは、イメージを使用して ACS クラスタに acs-kube という名前のアプリケーションをデプロイする方法を示します。 このアプリケーションは、オンラインマジックキューブゲームを提供します。 このトピックの手順を実行すると、ACS クラスタが作成され、マジックキューブゲームを提供するアプリケーションがデプロイされます。

アプリケーションのデプロイに使用されるコンテナイメージは、オープンソースプロジェクトに基づいて構築されています。 イメージアドレスは
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 に付与する必要があります。
ステップ 2: ACS クラスタを作成する
このステップでは、ACS クラスタを作成するときにクラスタパラメータを構成する方法を示します。
ACS コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスタ] ページの左上隅にある [クラスタの作成] をクリックします。
[クラスタの作成] ページで、次の表に示すパラメータを設定します。 表に記載されていないパラメータには、デフォルト設定を使用します。
パラメータ
説明
例
クラスタ名
クラスタの名前を入力します。
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] を選択します。
[注文の確認] をクリックし、利用規約を読んで選択してから、[クラスタの作成] をクリックします。
説明クラスタの作成には約 10 分かかります。 クラスタが作成されると、[クラスタ] ページでクラスタを表示できます。
ステップ 3: クラスタに接続する
このステップでは、kubectl クライアントまたは Cloud Shell を使用して ACS クラスタに接続する方法を示します。 詳細については、「クラスタの kubeconfig ファイルを取得する方法と kubectl を使用してクラスタに接続する方法」および「Cloud Shell で kubectl を使用して ACS クラスタを管理する」をご参照ください。
kubectl クライアントを使用してクラスタに接続する
ACS コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスタ] ページで、作成したクラスタの名前 (この例では ACS-Demo) をクリックします。
[クラスタ情報] ページで、[接続情報] タブをクリックします。 [パブリックアクセス] タブの [コピー] をクリックして、インターネット経由でクラスタにアクセスするために使用される認証情報をコピーします。
認証情報を
$HOME/.kubeディレクトリのconfigファイルに貼り付けて、ファイルを保存してから終了します。説明$HOME/ディレクトリに.kubeフォルダとconfigファイルが存在しない場合は、フォルダとファイルを手動で作成する必要があります。次の 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 を使用してクラスタに接続する
ACS コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスタ] ページで、作成したクラスタを見つけ、[アクション] 列で を選択します。
Cloud Shell の起動には数秒かかります。 Cloud Shell が起動したら、Cloud Shell インターフェイスで kubectl コマンドを実行して、クラスタとクラスタにデプロイされたアプリケーションを管理できます。
ステップ 4:アプリケーションのデプロイと公開
このステップでは、kubectl を使用して Deployment を作成することでステートレス アプリケーションをデプロイし、LoadBalancer サービスを使用してアプリケーションを公開する方法を示します。アプリケーションを公開する方法の詳細については、「自動的に作成された SLB インスタンスを使用してアプリケーションを公開する」をご参照ください。
acs-cube.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。
次のコマンドを実行して、acs-cube アプリケーションをデプロイします。
kubectl apply -f acs-cube.yaml次のコマンドを実行して、アプリケーションのステータスをクエリします。
kubectl get deployment acs-cube予想される出力:
NAME READY UP-TO-DATE AVAILABLE AGE acs-cube 2/2 2 2 96sacs-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次のコマンドを実行して、ack-cube-svc という名前のサービスを作成し、そのサービスを使用してアプリケーションを公開します。
ACS はインターネットに接続された Server Load Balancer (SLB) インスタンスを自動的に作成し、SLB インスタンスをサービスに関連付けます。
kubectl apply -f acs-cube-svc.yaml次のコマンドを実行して、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 キーを押してマジックキューブゲームを開始します。

参考資料
アプリケーション ポッドの自動スケーリングを有効にするには、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 サービスの課金ルールの詳細については、「課金」をご参照ください。