Container Service for Kubernetes (ACK) クラスターを使用すると、クラウド上で実行されているコンテナ化されたアプリケーションを便利かつ効率的に管理できます。このトピックでは、クラスターコンソールまたは kubectl を使用して、コンテナ化されたデモアプリケーション (マジックキューブゲーム) を ACK クラスターに迅速にデプロイ、公開、および監視する方法について説明します。
概要
このトピックでは、ack-cube という名前のアプリケーションをデプロイして、オンラインのマジックキューブゲームとして実行します。このアプリケーションは、コンテナイメージを使用して ACK Pro マネージドクラスターにデプロイされます。このトピックの手順を完了すると、ACK Pro マネージドクラスターにデプロイされたマジックキューブゲームアプリケーションが完成します。
ACK をアクティブ化し、ACK に権限を付与し、ACK クラスターを作成します。
コンソールまたは kubectl の 2 つの方法のいずれかを使用して、マジックキューブゲームアプリケーションをデプロイします。
ack-cube サービスの外部 IP アドレスを使用して、インターネット経由でアプリケーションにアクセスします。
1. クラスターを迅速に作成する
ACK を初めて使用する場合は、ACK をアクティブ化し、ACK に権限を付与する必要があります。次に、ACK クラスターを作成し、そのクラスターにマジックキューブゲームアプリケーションをデプロイします。ACK とその機能を正常に使用できるようにするには、まず ACK と必要なクラウドサービスをアクティブ化し、必要なデフォルトロールを ACK に割り当てる必要があります。公式ガイドに従ってクラスター設定を構成し、権限付与を完了することをお勧めします。詳細については、「ACK マネージドクラスターを迅速に作成する」をご参照ください。ACK クラスターおよび ACK クラスターで使用されるクラウドリソースの課金の詳細については、「課金」をご参照ください。
ACK マネージドクラスターを作成する際に、インテリジェントマネージドモードを有効にすることを選択できます。このモードを有効にすると、簡単な計画構成を行うだけで、ベストプラクティスに従った ACK クラスターをワンクリックで作成できます。このクラスターは、デフォルトのインテリジェントマネージドノードプールを作成し、ノードのライフサイクルは ACK によって管理および維持されます。詳細については、「ACK マネージドクラスターの作成 (インテリジェントマネージドモード)」をご参照ください。
クラスターに詳細なカスタム構成を行う必要がある場合は、「ACK マネージドクラスターの作成」で完全なプロセスをご参照ください。
Container Service 管理コンソールにログインします。[クラスター] ページで、[クラスターの作成] をクリックします。

上部で [ACK マネージドクラスター] タブを選択し、クリックしてインテリジェントマネージドモードを有効にします。インターネット経由でクラスターにアクセスする必要がある場合は、個人用のテストクラスターで [EIP で API Server を公開] を選択してこの機能を有効にすると、後でクラスターへの接続と管理が容易になります。次に、[設定の確認] をクリックし、選択した構成を確認して、[クラスターの作成] をクリックします。

2. アプリケーションのデプロイ
コンソールまたは kubectl を使用してアプリケーションパラメーターを手動で構成することで、マジックキューブゲームをデプロイできます。
コンソールデプロイメント: アプリケーションをデプロイして公開し、コンソール経由でアプリケーションにアクセスします。
kubectl デプロイメント: kubectl (CloudShell、kubectl クライアント、または Workbench) を使用してクラスターに接続し、アプリケーションをデプロイして公開し、アプリケーションにアクセスします。
このトピックの例では、パブリックイメージを使用します。パブリックイメージをプルするには、クラスターまたはノードがインターネットにアクセスできる必要があります。
クラスターのインターネットアクセスを有効にする (推奨): クラスターが存在する VPC にインターネット NAT ゲートウェイを作成します。これにより、クラスター内のすべてのリソースにインターネットアクセスが提供されます。
ノードに固定パブリック IP アドレスを割り当てる: パブリック IP アドレスを持つノードは、パブリックイメージをプルできます。ただし、ワークロードをデプロイするすべてのノードにパブリック IP アドレスを割り当てる必要があります。
コンソールデプロイメント
2.1 アプリケーションのデプロイと公開
このステップでは、Deployment をデプロイし、アプリケーションをインターネットに公開する方法を示します。アプリケーションはマジックキューブゲームです。Deployment の作成に使用されるパラメーターの詳細については、「Deployment を使用してステートレスアプリケーションを作成する」をご参照ください。
[クラスター] ページで、ack-demo クラスターの名前をクリックします。
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[デプロイメント] ページの右上隅にある [イメージから作成] をクリックします。
[基本情報] ウィザードページで、アプリケーション名を ack-cube に設定します。
[次へ] をクリックします。[コンテナ] ウィザードページで、コンテナパラメーターを設定します。

パラメーター
説明
例
イメージ名
イメージ名を入力します。
registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cube:1.0と入力します。リソース制限
アプリケーションのリソース制限を指定します。これにより、アプリケーションが過剰なリソースを占有するのを防ぎます。
この例では、1 vCore と 1,024 MiB のメモリが指定されています。エフェメラルストレージは空のままです。
必須リソース
アプリケーション用に予約されるリソースの量を指定します。これにより、リソース不足によるアプリケーションの利用不可を防ぎます。
この例では、0.5 vCore と 512 MiB のメモリが指定されています。エフェメラルストレージは空のままです。
ポート
コンテナポートを構成します。
名前: ack-cube。
コンテナポート: 80。
プロトコル: TCP。
[次へ] をクリックします。[詳細設定] ウィザードページで、Service セクションの [作成] をクリックします。[サービスの作成] ダイアログボックスで、Service パラメーターを設定して ack-cube アプリケーションを公開します。Service の構成が完了したら、[OK] をクリックします。

パラメーター
説明
例
名前
Service の名前を入力します。
ack-cube-svc
タイプ
Service のタイプ。このパラメーターは、Service へのアクセス方法を指定します。[Server Load Balancer] > [Classic Load Balancer (CLB)] > [リソースの作成] を選択します。テスト環境では、CLB リソースにデフォルト設定を使用できます。
この例では、デフォルト設定が使用されます。
ポート
[サービスポート] と [コンテナポート] を指定します。[コンテナポート] は、バックエンド Pod で公開されているものと同じである必要があります。
サービスポート: 80。
コンテナポート: 80。
プロトコル: TCP。
ワークロードの構成が完了したら、[作成] をクリックします。アプリケーションが作成されると、完了ウィザードページにリダイレクトされます。アプリケーションに含まれるリソースオブジェクトを見つけ、[詳細の表示] をクリックしてアプリケーションの詳細を表示できます。

2.2 アプリケーションへのアクセス
このステップでは、Service を使用してアプリケーションにアクセスする方法を示します。
ACK コンソールにログインします。[クラスター] ページで、クラスターの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。[default] 名前空間で [ack-cube] という名前のアプリケーションを見つけます。[アクセス方法] タブをクリックし、新しく作成された Service (ack-cube-svc) を見つけて、[外部エンドポイント] 列のリンクをクリックしてマジックキューブゲームにアクセスします。
Kubectl デプロイメント
2.1 クラスターへの接続
kubectl、Workbench、または Cloud Shell を使用してクラスターに接続できます。
CloudShell
Cloud Shell を起動すると、Cloud Shell は自動的に Linux VM を作成します。Linux VM は無料で利用できます。VM には、クラウド管理ツールとシステムツールがプリインストールされています。これらのツールを Cloud Shell が提供する Web IDE と組み合わせて使用して、クラウドリソースを管理できます。このステップでは、[Cloud Shell] を使用して ACK クラスターに接続する方法を示します。詳細については、「Workbench または Cloud Shell 上の kubectl を使用して ACK クラスターに接続する」をご参照ください。
ACK コンソールにログインします。コンソールの左側のナビゲーションウィンドウで、[クラスター] をクリックします。[クラスター情報] ページで、 を選択します。
Cloud Shell の起動には数秒かかります。Cloud Shell が起動したら、[Cloud Shell] インターフェイスで kubectl コマンドを実行して、クラスター内のクラスターとアプリケーションを管理できます。
Workbench
Alibaba Cloud が提供するリモート接続ツールである Workbench を使用すると、追加のソフトウェアをインストールすることなく、ブラウザから ACK クラスターに接続できます。詳細については、「Workbench を使用してインスタンスに接続する」をご参照ください。
ACK コンソールにログインします。コンソールの左側のナビゲーションウィンドウで、[クラスター] をクリックします。[クラスター情報] ページで、 を選択します。
Workbench の起動には数秒かかります。Workbench が起動したら、ページの指示に従って [Workbench] インターフェイスで kubectl コマンドを実行して、クラスターとアプリケーションを管理できます。
Kubectl クライアント
インターネット経由でクラスターに接続する場合は、オンプレミスマシンに kubectl クライアントをインストールできます。このステップでは、kubectl クライアントを使用して ACK クラスターに接続する方法を示します。詳細については、「クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する」をご参照ください。
kubectl クライアントをインストールして設定します。詳細については、「kubectl のインストールと設定」をご参照ください。
ACK コンソールにログインします。コンソールの左側のナビゲーションウィンドウで、[クラスター] をクリックします。[クラスター] ページで、ack-demo クラスターを見つけてその名前をクリックします。[クラスター情報] ページで、[接続情報] タブをクリックします。[パブリックアクセス] タブの [コピー] をクリックして、インターネット経由でクラスターにアクセスするために使用する資格情報をコピーします。オンプレミスマシンの $HOME/.kube ディレクトリにある config ファイルに資格情報を貼り付け、ファイルを保存して終了します。
説明.kube フォルダと config ファイルがオンプレミスマシンの $HOME/ ディレクトリに存在しない場合は、フォルダとファイルを手動で作成する必要があります。
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
2.2 アプリケーションのデプロイと公開
このステップでは、kubectl を使用して Deployment をデプロイし、LoadBalancer Service を使用してアプリケーションを公開する方法を示します。アプリケーションを公開する方法の詳細については、「自動的に作成された SLB インスタンスを使用してアプリケーションを公開する」をご参照ください。
次の YAML テンプレートを使用して ack-cube.yaml ファイルを作成します。
apiVersion: apps/v1 # 1.8.0 より前のバージョンの場合は apps/v1beta1 を使用します kind: Deployment metadata: name: ack-cube # アプリケーションの名前。 labels: app: ack-cube spec: replicas: 2 # レプリカ Pod の数。 selector: matchLabels: app: ack-cube # アプリケーションを公開するために使用される Service のセレクターに同じ値を指定する必要があります。 template: metadata: labels: app: ack-cube spec: containers: - name: ack-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次のコマンドを実行して、ack-cube デモアプリケーションをデプロイします。
kubectl apply -f ack-cube.yaml次のコマンドを実行して、アプリケーションが正常に実行されていることを確認します。
kubectl get deployment ack-cube期待される出力:
NAME READY UP-TO-DATE AVAILABLE AGE ack-cube 2/2 2 2 96s次の YAML テンプレートを使用して ack-cube-svc.yaml ファイルを作成します。
selectorを ack-cube.yaml ファイルのmatchLabelsの値に設定します。この例では、値はapp: ack-cubeです。これにより、アプリケーションが Service のバックエンドに追加されます。apiVersion: v1 kind: Service metadata: labels: app: ack-cube name: ack-cube-svc namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: ack-cube # Deployment の作成に使用される YAML ファイルの matchLabels パラメーターの値を指定する必要があります。 type: LoadBalancer次のコマンドを実行して ack-cube-svc という名前の Service を作成し、その Service を使用してアプリケーションを公開します。
ACK は自動的にインターネット向け SLB インスタンスを作成し、そのインスタンスを Service に関連付けます。
kubectl apply -f ack-cube-svc.yaml次のコマンドを実行して、LoadBalancer Service が作成されたことを確認します。
作成したアプリケーションは、出力の EXTERNAL-IP 列の IP アドレスを使用して公開されます。
kubectl get svc ack-cube-svc期待される出力:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ack-cube-svc LoadBalancer 172.16.72.161 47.94.xx.xx 80:31547/TCP 32sブラウザのアドレスバーに EXTERNAL-IP アドレス (47.94.xx.xx) を入力して、マジックキューブゲームアプリケーションにアクセスします。
3. (オプション) リソースの解放
ACK Pro マネージドクラスターの課金項目には、クラスター管理とクラウドリソースが含まれます。ACK はクラスター管理料金を請求します。対応するクラウドサービスはクラウドリソース料金を請求します。
クラスターが不要になった場合は、削除できます。ACK コンソールにログインします。[クラスター] ページで、クラスターの [アクション] 列で [その他] > [削除] を選択します。[クラスターと関連リソースの削除] ページで、[削除したいリソースを選択] し、[削除] をクリックします。ACK クラスターの削除方法の詳細については、「クラスターの削除」をご参照ください。
インテリジェントマネージドクラスターでは、デフォルトで削除保護が有効になっています。クラスターを削除する前に、クラスターの削除保護を無効にする必要があります。

リファレンス
ビジネスのリソースリクエストが予測不可能であったり、定期的に変更されたりする場合は、ビジネスの自動スケーリングを有効にすることをお勧めします。たとえば、Web アプリケーション、ゲームサービス、またはオンライン教育アプリケーションの自動スケーリングを有効にできます。自動スケーリング機能には、ワークロードのスケーリングとコンピューティングリソースのスケーリングが含まれます。詳細については、「自動スケーリングの概要」をご参照ください。
Service を介してアプリケーションを公開するだけでなく、Ingress を使用してレイヤー 7 でのアプリケーショントラフィックのルーティングを有効にすることもできます。詳細については、「Ingress 管理」をご参照ください。
コンテナのパフォーマンスを監視するだけでなく、クラスターインフラストラクチャ、アプリケーションのパフォーマンス、およびワークロードに対する操作を監視できます。Kubernetes の可観測性機能には、監視とロギングが含まれます。監視により、開発者はシステム操作を追跡できます。ロギングは、診断とトラブルシューティングを容易にします。詳細については、「可観測性システムの概要」をご参照ください。