Container Compute Service (ACS) では、コンテナイメージ、YAML オーケストレーションテンプレート、および kubectl コマンドラインを使用してステートレスアプリケーションを作成できます。本トピックでは、ACS クラスター内に Nginx アプリケーションを例として、ステートレスアプリケーションを作成する手順について説明します。
コンソール
イメージから作成
ステップ 1:基本アプリケーション情報の設定
-
ACS コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
-
クラスターリスト ページで、対象のクラスター名をクリックします。左側のナビゲーションウィンドウで、Workloads > Deployments を選択します。
-
Deployments ページで、イメージから作成 をクリックします。
基本情報 の設定ウィザードで、アプリケーションの基本情報を指定できます。
設定項目
説明
アプリケーション名
アプリケーションの名前を入力します。
レプリカ数
アプリケーションの Pod 数です。デフォルト値:2。
ワークロード
ステートレス(Deployment) を選択します。
ラベル
アプリケーションを識別するためのラベルを追加します。
アノテーション
アプリケーションにアノテーションを追加します。
インスタンスタイプ
コンピューティングタイプを選択します。「コンピューティングタイプ」の詳細については、「ACS Pod インスタンスの概要」をご参照ください。
QoS タイプ
サービス品質(QoS)タイプを選択します。
次へ をクリックして、コンテナの構成 ウィザードページに進みます。
ステップ 2:コンテナの設定
コンテナの構成 ウィザードページで、コンテナイメージ、リソース、ポート、環境変数、ヘルスチェック、ライフサイクル、ボリューム、およびログを設定します。
アプリケーションの Pod に複数のコンテナを追加するには、コンテナを追加 を コンテナ 1 タブの右側からクリックします。
基本構成 セクションで、コンテナの基本情報を設定します。
設定項目
説明
イメージ名
イメージを選択します。
イメージの選択 をクリックして、イメージを選びます。
Container Registry Enterprise Edition:Container Registry(ACR)にホストされているエンタープライズエディションのイメージを選択します。イメージが配置されているリージョンと ACR インスタンスを指定する必要があります。「ACR」の詳細については、「Container Registry(ACR)とは」をご参照ください。
Container Registry Personal Edition(事前に有効化が必要):Container Registry(ACR)にホストされているパーソナルエディションのイメージを選択します。イメージが配置されているリージョンと ACR インスタンスを指定する必要があります。
Artifact Center:ベース OS イメージ、言語ランタイムイメージ、AI やビッグデータ関連のイメージを含みます。本例では、Artifact Center から取得した Nginx イメージを使用します。「Artifact Center」の詳細については、「Artifact Center」をご参照ください。
(オプション)イメージプルポリシーを設定します。
イメージプルポリシー のドロップダウンリストから、イメージプルポリシーを選択します。デフォルトではポリシーは設定されておらず、Kubernetes は IfNotPresent を使用します。
ローカルイメージがあれば使用(IfNotPresent):イメージがローカル(ホストに事前にプル済み)に存在する場合、再びプルされません。ローカルに存在しない場合はプルされます。
常にイメージをプル(Always):デプロイまたはスケールアウト時に毎回イメージをプルします。ローカルイメージは使用しません。
ローカルイメージのみ使用(Never):ローカルイメージのみを使用します。
(オプション)イメージシークレットを設定します。
イメージシークレットの設定 をクリックして、非公開イメージをシークレットで保護します。
Container Registry Personal Edition インスタンスの場合、イメージシークレットを設定することでコンテナイメージをプルできます。「シークレットの管理」の詳細については、「シークレットの管理」をご参照ください。
Container Registry Enterprise Edition インスタンスの場合、パスワードレスコンポーネントを使用してイメージをプルできます。手順については、「パスワードなしで ACR イメージをプル」をご参照ください。
必要なリソース
コンテナのリソースクォータを設定します。
CPU:コンテナの CPU リソース要求および制限を指定します。デフォルトでは、要求値と制限値は等しくなります。課金方法は従量課金です。YAML テンプレートで、リソース要求値と異なるリソース制限値を設定すると、リソース要求値は自動的にリソース制限値に上書きされます。「リソース仕様」の詳細については、「リソース仕様」をご参照ください。
メモリ:コンテナのメモリリソース要求および制限を指定します。デフォルトでは、要求値と制限値は等しくなります。課金方法は従量課金です。YAML テンプレートで、リソース要求値と異なるリソース制限値を設定すると、リソース要求値は自動的にリソース制限値に上書きされます。「リソース仕様」の詳細については、「リソース仕様」をご参照ください。
コンテナ起動コマンド
(オプション)コンテナの起動コマンドを設定します。
stdin:コンソール入力をコンテナに送信します。
tty:標準入力コンソールをコンテナのコンソール入力として使用します。
説明通常は、stdin と tty の両方を選択します。これにより、端末(tty)がコンテナの標準入力(stdin)にバインドされます。たとえば、インタラクティブなプログラムはユーザーからの標準入力を読み取り、出力を端末に表示します。
Init コンテナ
(オプション)このオプションを選択すると、Init コンテナが作成されます。
Init コンテナは、アプリケーションコンテナの起動をブロックまたは遅延させます。Init コンテナが正常に実行されると、Pod 内のアプリケーションコンテナが並列で起動します。たとえば、依存サービスの可用性を確認できます。Init コンテナには、アプリケーションイメージに含まれていないユーティリティやインストールスクリプトを含めることができます。これらのツールは、カーネルパラメーターの設定や設定ファイルの生成など、アプリケーションコンテナの実行環境を初期化します。「Init コンテナ」の詳細については、「Init コンテナ」をご参照ください。
(オプション)ポート設定 セクションで、追加 をクリックして、コンテナポートを設定します。
設定項目
説明
名前
ポートの名前を指定します。
コンテナポート
公開するポート番号を指定します。有効値は 1 ~ 65535 です。
プロトコル
TCP および UDP をサポートします。
(オプション)環境変数 セクションで、追加 をクリックして、環境変数を設定します。
Pod の環境変数を、キーと値のペアを使用して構成します。環境変数を使用して、環境フラグを追加したり、構成を渡したりできます。詳細については、「Pod の環境変数」をご参照ください。
設定項目
説明
タイプ
環境変数のタイプを指定します。
カスタム
設定項目
シークレット
変数/変数リファレンス
リソースリファレンス
設定項目およびシークレットは、すべてのファイルへのリファレンスをサポートします。
本例ではシークレットを使用します。シークレット をタイプとして選択し、対象のシークレットを選択します。デフォルトでは、シークレット内のすべてのファイルがリファレンスされます。

対応する YAML ファイルも、シークレット全体をリファレンスします。

変数名
環境変数の名前です。
変数/変数リファレンス
リファレンス変数の値を設定します。
(オプション)ヘルスチェック セクションで、必要に応じて Liveness プローブ、Readiness プローブ、および Startup プローブ を有効化できます。
Liveness:コンテナが正常に実行中であるかどうかを判定するために使用されます。指定された回数のチェックが失敗すると、kubelet がコンテナを再起動します。Liveness プローブは、デッドロックなどの原因でコンテナが実行中状態を維持しているものの応答できないといった問題を検出できます。
Readiness:コンテナがトラフィックを受け入れる準備ができているかどうかを判定するために使用されます。Readiness プローブが成功した後のみ、Pod がサービスのバックエンドにアタッチされます。
Startup:コンテナの起動時にのみ実行され、起動が正常に完了したかどうかを確認します。Liveness プローブ および Readiness プローブ は、Startup プローブが成功した後にのみ実行されます。
詳細については、「生存確認、準備完了確認、および起動確認プローブの設定」をご参照ください。
設定項目
説明
HTTP リクエスト
コンテナに対して HTTP GET リクエストを送信します。以下のパラメーターがサポートされます:
プロトコル:HTTP または HTTPS。
パス:HTTP サーバー上でアクセスするパスです。
ポート:公開ポート番号またはポート名です。値の範囲は 1 ~ 65535 です。
HTTP ヘッダー:HTTP リクエスト内のカスタムヘッダーです。HTTP では重複するヘッダーが許可されています。キーと値のペアを使用してヘッダーを設定できます。
初期遅延(秒):initialDelaySeconds。コンテナ起動後に最初のプローブを開始するまでの待機時間(秒)です。デフォルト値は 3 です。
間隔(秒):periodSeconds。プローブの実行間隔(秒)です。デフォルト値は 10 です。最小値は 1 です。
タイムアウト(秒):timeoutSeconds。プローブのタイムアウト期間(秒)です。デフォルト値は 1 です。最小値は 1 です。
健全しきい値:コンテナを健全と見なすために必要な、連続した成功プローブの最小回数です。デフォルト値は 1 です。最小値は 1 です。Liveness プローブでは、この値は必ず 1 でなければなりません。
不健全しきい値:コンテナを不健全と見なすために必要な、連続した失敗プローブの最小回数です。デフォルト値は 3 です。最小値は 1 です。
TCP 接続
コンテナに対して TCP ソケットリクエストを送信します。kubelet は指定されたポートでソケットを開こうと試みます。接続が成功すると、コンテナは健全と見なされます。接続が失敗すると、コンテナは不健全と見なされます。以下のパラメーターがサポートされます:
ポート:公開ポート番号またはポート名です。値の範囲は 1 ~ 65535 です。
初期遅延(秒):initialDelaySeconds。コンテナ起動後に最初のプローブを開始するまでの待機時間(秒)です。デフォルト値は 15 です。
間隔(秒):periodSeconds。プローブの実行間隔(秒)です。デフォルト値は 10 です。最小値は 1 です。
タイムアウト(秒):timeoutSeconds。プローブのタイムアウト期間(秒)です。デフォルト値は 1 です。最小値は 1 です。
健全しきい値:コンテナを健全と見なすために必要な、連続した成功プローブの最小回数です。デフォルト値は 1 です。最小値は 1 です。Liveness プローブでは、この値は必ず 1 でなければなりません。
不健全しきい値:コンテナを不健全と見なすために必要な、連続した失敗プローブの最小回数です。デフォルト値は 3 です。最小値は 1 です。
コマンドライン
コンテナ内でコマンドを実行して、その健全性を確認します。以下のパラメーターがサポートされます:
コマンドライン:コンテナの健全性を確認するために使用するコマンドです。
初期遅延(秒):initialDelaySeconds。コンテナ起動後に最初のプローブを開始するまでの待機時間(秒)です。デフォルト値は 5 です。
間隔(秒):periodSeconds。プローブの実行間隔(秒)です。デフォルト値は 10 です。最小値は 1 です。
タイムアウト(秒):timeoutSeconds。プローブのタイムアウト期間(秒)です。デフォルト値は 1 です。最小値は 1 です。
健全しきい値:コンテナを健全と見なすために必要な、連続した成功プローブの最小回数です。デフォルト値は 1 です。最小値は 1 です。Liveness プローブでは、この値は必ず 1 でなければなりません。
不健全しきい値:コンテナを不健全と見なすために必要な、連続した失敗プローブの最小回数です。デフォルト値は 3 です。最小値は 1 です。
(オプション)ライフサイクル セクションで、コンテナのライフサイクルを設定します。
コンテナの Post-start コマンド、Pre-stop コマンド、および Start コマンドを設定します。「コンテナのライフサイクルイベントにハンドラーをアタッチ」の詳細については、「コンテナのライフサイクルイベントにハンドラーをアタッチ」をご参照ください。
設定項目
説明
実行開始
コンテナ起動前に実行するコマンドおよび引数を指定します。
Post-start コマンド
コンテナ起動後に実行するコマンドを指定します。
停止前処理
コンテナ停止前に実行するコマンドを指定します。
(オプション)ボリューム セクションで、コンテナにボリュームをアタッチします。
(オプション)ログ構成 セクションで、収集構成 および カスタムタグ を構成できます。
設定項目
説明
収集構成
Logstore:Simple Log Service に Logstore を作成して、収集されたログを保存します。
コンテナ内のログパス:stdout およびテキストログをサポートします。
Stdout:コンテナの標準出力ログを収集します。
テキストログ:コンテナ内の指定パスからログを収集します。本例では、
/var/log/nginx配下のすべてのテキストログを収集します。ワイルドカードが使用可能です。
カスタムタグ
カスタムタグを追加します。設定すると、これらのタグがコンテナのログ出力に含まれます。カスタムタグは、統計およびフィルター用のログのタグ付けに役立ちます。
次へ をクリックして、詳細設定 ウィザードページに進みます。
ステップ 3:詳細設定の完了
詳細設定 ウィザードページで、アクセス、スケーリング、スケジューリング、ラベル、およびアノテーションを構成できます。
アクセス設定 セクションで、バックエンド Pod をどのように公開するかを構成します。
バックエンド Pod の公開方法を選択できます。本例では、ClusterIP サービスおよび Ingress を使用して、外部からアクセス可能な Nginx アプリケーションを作成します。
サービスの構成: 作成 を サービス の横からクリックして、サービス設定を構成します。
Ingress の構成: 作成 を Ingress の横からクリックして、バックエンド Pod のルーティングルールを設定します。
(オプション)スケーリング構成 セクションで、メトリックベースのスケーリング を有効化して、アプリケーションの負荷変動に対応します。
ACK では、メトリックベースの Pod スケーリングがサポートされています。この機能は、CPU およびメモリ使用量に基づいて Pod 数を自動的に調整します。
説明オートスケーリングを有効化するには、コンテナのリソース要求を指定する必要があります。指定しないと、オートスケーリングは有効になりません。
設定項目
説明
メトリック
CPU およびメモリ使用量をサポートします。必須リソースタイプと一致する必要があります。
トリガー条件
スケーリングをトリガーするリソース使用率のパーセンテージです。使用率がこの値を超えると、スケーリングが開始されます。
最大レプリカ数
このワークロードの最大 Pod 数です。
最小レプリカ数
このワークロードの最小 Pod 数です。
ACK では、スケジュールされた Pod スケーリングがサポートされています。この機能は、スケジュールされた時刻に Pod 数を増減させます。スケジュールされたスケーリングを有効化する前に、ack-kubernetes-cronhpa-controller コンポーネントをインストールする必要があります。「CronHPA」の詳細については、「CronHPA」をご参照ください。
(オプション)ラベルおよびアノテーション セクションで、追加 をクリックして、Pod にラベルおよびアノテーションを追加します。
作成 をクリックします。
ステップ 4:アプリケーション情報の表示
作成が成功すると、デフォルトで成功ページに移動します。アプリケーションの詳細を表示 をクリックして、デプロイメントの詳細ページに移動できます。
また、ステートレス ページでデプロイメントを表示することもできます。詳細ページを開くには、デプロイメント名または 操作 > 詳細 をクリックします。
YAML から作成
ACK オーケストレーションテンプレートを使用する場合、アプリケーションに必要なリソースオブジェクトを定義する必要があります。ラベルセレクターなどのメカニズムを使用して、これらのオブジェクトを結合し、完全なアプリケーションを構成できます。
本例では、オーケストレーションテンプレートを使用して Nginx アプリケーションを作成する方法を示します。テンプレートには、デプロイメントおよびサービスが含まれます。デプロイメントは Pod リソースを作成します。サービスはバックエンド Pod にバインドされ、完全な Nginx アプリケーションを形成します。
-
ACS コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
-
クラスターリスト ページで、対象のクラスター名をクリックします。左側のナビゲーションウィンドウで、Workloads > Deployments を選択します。
-
Deployments ページで、右上隅の YAML から作成 をクリックします。
作成 ページで、テンプレートを構成し、作成 をクリックします。
サンプルテンプレート:ACS では、さまざまなリソースタイプ向けのサンプル Kubernetes YAML テンプレートを提供しており、リソースの迅速なデプロイを支援します。Kubernetes YAML 形式の要件に従って独自のテンプレートを作成し、目的のリソースを記述できます。
ワークロードの追加:この機能を使用して、YAML テンプレートをすばやく定義できます。
既存のテンプレートの使用:既存のオーケストレーションテンプレートをテンプレート構成ページにインポートできます。
テンプレートの保存:構成済みのオーケストレーションテンプレートを保存できます。
以下は、Nginx アプリケーションのサンプル YAML テンプレートです。このテンプレートを使用して、Nginx デプロイメントをすばやく作成できます。デフォルトでは、Server Load Balancer(SLB)インスタンスが作成されます。
説明ACK では、Kubernetes YAML オーケストレーションがサポートされています。
---を使用してリソースオブジェクトを区切ることで、単一のテンプレートで複数のリソースを作成できます。(オプション)ボリュームをマウントする場合、マウントディレクトリ内の既存ファイルはデフォルトで上書きされます。これらのファイルを保持するには、
subPathパラメーターを構成します。
作成 をクリックすると、デプロイメントのステータスが表示されます。
kubectl
kubectl コマンドを使用して、アプリケーションを作成および表示できます。
クラスターに接続します。「kubectl を使用した ACK クラスターへの接続」の詳細については、「kubectl を使用した ACK クラスターへの接続」または「Cloud Shell 上の kubectl を使用した ACK クラスターの管理」をご参照ください。
以下のコマンドを実行して、コンテナを起動します。本例では、Nginx Web サーバーを起動します。
kubectl create deployment nginx --image=registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest以下のコマンドを実行して、コンテナ用のサービスを作成します。
--type=LoadBalancerを設定すると、Nginx コンテナにトラフィックをルーティングする Alibaba Cloud Server Load Balancer(SLB)インスタンスが作成されます。kubectl expose deployment nginx --port=80 --target-port=80 --type=LoadBalancer以下のコマンドを実行して、実行中の Nginx コンテナを一覧表示します。
kubectl get pod |grep nginx期待される出力:
NAME READY STATUS RESTARTS AGE nginx-2721357637-d**** 1/1 Running 1 9h