Container Compute Service (ACS) では、イメージ、YAML テンプレート、または kubectl を使用してステートレスアプリケーションを作成できます。このトピックでは、ACS クラスタにステートレス NGINX アプリケーションを作成する方法について説明します。
コンソールを使用する
イメージからデプロイメントを作成する
手順 1:基本設定を構成する
ACS コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスタ] ページで、管理するクラスタを見つけ、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションウィンドウで、
を選択します。[デプロイメント] タブで、[イメージから作成] をクリックします。
[基本情報] ウィザードページで、アプリケーションの基本設定を構成します。
パラメータ
説明
名前
アプリケーションの名前を入力します。
レプリカ
アプリケーションにプロビジョニングされるポッドの数です。デフォルト値:2。
タイプ
この例では、[デプロイメント] が選択されています。
ラベル
アプリケーションにラベルを追加します。ラベルはアプリケーションを識別するために使用されます。
アノテーション
アプリケーションにアノテーションを追加します。
インスタンスタイプ
使用するインスタンスタイプ。詳細については、「ACS ポッドの概要」をご参照ください。
QoS タイプ
QoS クラスを選択します。詳細については、「コンピューティングパワー QoS」をご参照ください。
汎用ポッドは、[デフォルト] および [BestEffort] QoS クラスをサポートしています。
パフォーマンス強化ポッドは、[デフォルト] QoS クラスのみをサポートしています。
[次へ] をクリックして、[コンテナ] ウィザードページに進みます。
手順 2:コンテナを構成する
[コンテナ] ウィザードページで、コンテナイメージ、リソース構成、ポート、環境変数、ヘルスチェック、ライフサイクル、ボリューム、およびログを構成します。
[コンテナ 1] タブの右側にある [コンテナを追加] をクリックして、さらにコンテナを追加します。
[一般] セクションで、基本的なコンテナ設定を構成します。
パラメータ
説明
イメージ名
イメージを選択
[イメージを選択] をクリックして、コンテナイメージを選択します。
[Container Registry Enterprise Edition]:Container Registry Enterprise Edition インスタンスに保存されているイメージを選択します。イメージが属するリージョンと Container Registry インスタンスを選択する必要があります。Container Registry の詳細については、「Container Registry とは」をご参照ください。
[Container Registry Personal Edition]:Container Registry Personal Edition インスタンスに保存されているイメージを選択します。Container Registry Personal Edition がアクティブになっていることを確認してください。イメージが属するリージョンと Container Registry インスタンスを選択する必要があります。
[アーティファクトセンター]:アーティファクトセンターには、アプリケーションのコンテナ化のための基本オペレーティングシステムイメージ、基本言語イメージ、および AI 関連およびビッグデータ関連のイメージが含まれています。この例では、NGINX イメージが選択されています。詳細については、「アーティファクトセンターの概要」をご参照ください。
(オプション)イメージプルポリシーを設定する
[イメージプルポリシー] ドロップダウンリストからイメージプルポリシーを選択します。デフォルトでは、Kubernetes の IfNotPresent ポリシーが使用されます。
[IfNotPresent]:プルするイメージがオンプレミスマシンで見つかった場合、オンプレミスマシンのイメージが使用されます。それ以外の場合、システムはイメージレジストリからイメージをプルします。
[常に]:アプリケーションがデプロイまたは拡張されるたびに、システムはレジストリからイメージをプルします。
[しない]:システムはオンプレミスマシンのイメージのみを使用します。
(オプション)イメージプルシークレットを設定する
[イメージプルシークレットを設定] をクリックして、プライベートイメージをプルするために使用するシークレットを設定します。
シークレットを使用して、Container Registry Personal Edition インスタンスからイメージをプルできます。シークレットの設定方法の詳細については、「シークレットの管理」をご参照ください。
シークレットを使用せずに、Container Registry Enterprise Edition インスタンスからイメージをプルできます。詳細については、「シークレットを使用せずに Container Registry インスタンスからイメージをプルする」をご参照ください。
必要なリソース
コンテナのリソースリクエストを指定します。
CPU:コンテナの CPU リクエストと CPU 制限を構成できます。デフォルトでは、CPU リクエストは CPU 制限と同じです。CPU リソースは従量課金制で課金されます。YAML テンプレートを使用してリソースリクエストとは異なるリソース制限を設定した場合、リソースリクエストはリソース制限の値に自動的に上書きされます。詳細については、「リソース仕様」をご参照ください。
メモリ:コンテナのメモリリクエストとメモリ制限を構成できます。デフォルトでは、メモリリクエストはメモリ制限と同じです。メモリリソースは従量課金制で課金されます。YAML テンプレートを使用してリソースリクエストとは異なるリソース制限を設定した場合、リソースリクエストはリソース制限の値に自動的に上書きされます。詳細については、「リソース仕様」をご参照ください。
コンテナ起動パラメータ
コンテナの起動オプションを指定します。このパラメータはオプションです。
stdin:ACK コンソールの入力をコンテナに渡します。
tty:仮想端末で定義されている起動パラメータを ACK コンソールに渡します。
説明stdin と tty は一緒に使用されます。この場合、仮想端末 (tty) はコンテナの stdin に関連付けられます。たとえば、インタラクティブプログラムはユーザーから stdin を受信し、端末にコンテンツを表示します。
Init コンテナ
このチェックボックスを選択すると、init コンテナが作成されます。このパラメータはオプションです。
Init コンテナを使用して、アプリケーションコンテナの起動をブロックまたは延期できます。ポッド内のアプリケーションコンテナは、init コンテナが起動した後にのみ同時に起動します。たとえば、init コンテナを使用して、アプリケーションが依存するサービスの可用性を確認できます。アプリケーションイメージでは提供されていないツールやスクリプトを init コンテナで実行して、アプリケーションコンテナの実行環境を初期化できます。たとえば、ツールやスクリプトを実行して、カーネルパラメータを構成したり、構成ファイルを生成したりできます。詳細については、「Init コンテナ」をご参照ください。
オプション:[ポート] セクションで、[追加] をクリックしてコンテナポートを追加できます。
パラメータ
説明
名前
コンテナポートの名前を入力します。
コンテナポート
公開するコンテナポートを指定します。ポート番号は 1 ~ 65535 の範囲でなければなりません。
プロトコル
有効な値:TCP および UDP。
オプション:[環境] セクションで、[追加] をクリックして環境変数を追加できます。
環境ラベルを追加したり、構成を渡したりするために、キーと値のペアで環境変数をポッドに追加できます。詳細については、「環境変数を通じてポッド情報をコンテナに公開する」をご参照ください。
パラメータ
説明
タイプ
環境変数のタイプを選択します。有効な値:
[カスタム]
[パラメータ]
[シークレット]
[値/ValueFrom]
[ResourceFieldRef]
ConfigMap またはシークレットを選択した場合、選択した ConfigMap またはシークレットのすべてのデータをコンテナ環境変数に渡すことができます。
この例では、シークレットが選択されています。[タイプ] ドロップダウンリストから [シークレット] を選択し、[値/ValueFrom] ドロップダウンリストからシークレットを選択します。デフォルトでは、選択したシークレットのすべてのデータが環境変数に渡されます。
この場合、アプリケーションのデプロイに使用される YAML ファイルには、選択したシークレットのすべてのデータを参照する設定が含まれています。
変数キー
環境変数の名前。
値/ValueFrom
環境変数の値。
オプション:[ヘルスチェック] セクションで、ビジネス要件に基づいて [liveness]、[readiness]、および [startup] プローブを有効にできます。
Liveness:コンテナが想定どおりに実行されているかどうかを確認します。複数回連続して失敗した後、kubelet はコンテナを再起動します。Liveness プローブは、コンテナが実行中のまま応答しなくなる問題(デッドロックなど)を特定するのに役立ちます。
Readiness:Readiness プローブは、コンテナがトラフィックを受信する準備ができているかどうかを判断するために使用されます。ポッドは、Readiness チェックに合格した後にのみ、サービスのバックエンドに接続されます。
Startup:Startup プローブは、コンテナの初期化中に実行され、起動が成功したことを確認します。後続の Liveness プローブと Readiness プローブは、Startup プローブが成功した後にのみ開始されます。
詳細については、「Liveness、Readiness、および Startup プローブを構成する」をご参照ください。
パラメータ
説明
HTTP
コンテナに HTTP GET リクエストを送信します。次のパラメータを設定できます。
プロトコル:リクエストを送信するプロトコル。有効な値:[HTTP] および [HTTPS]。
パス:サーバーでリクエストされた HTTP パス。
ポート:コンテナによって公開されるポートの番号または名前。ポート番号は 1 ~ 65535 でなければなりません。
HTTP ヘッダー:HTTP リクエストのカスタムヘッダー。重複するヘッダーが許可されます。HTTP ヘッダーをキーと値のペアで指定できます。
初期遅延(秒):YAML ファイルの initialDelaySeconds フィールド。このフィールドは、コンテナの起動後、最初のプローブが実行されるまでの待機時間(秒単位)を指定します。デフォルト値:3。
期間(秒):YAML ファイルの periodSeconds フィールド。このフィールドは、プローブが実行される時間間隔(秒単位)を指定します。デフォルト値:10。最小値:1。
タイムアウト(秒):YAML ファイルの timeoutSeconds フィールド。このフィールドは、プローブがタイムアウトするまでの時間(秒単位)を指定します。デフォルト値:1。最小値:1。
正常なしきい値:プローブの失敗後、コンテナが正常と見なされるまでに発生する必要がある連続成功の最小数。デフォルト値:1。最小値:1。Liveness プローブの場合、このパラメータは 1 に設定する必要があります。
異常なしきい値:成功後、コンテナが異常と見なされるまでに発生する必要がある連続失敗の最小数。デフォルト値:3。最小値:1。
TCP
コンテナに TCP ソケットを送信します。kubelet は、指定されたポートでソケットを開こうとします。接続が確立できる場合、コンテナは正常と見なされます。それ以外の場合、コンテナは異常と見なされます。次のパラメータを構成できます。
ポート:コンテナによって公開されるポートの番号または名前。ポート番号は 1 ~ 65535 でなければなりません。
初期遅延(秒):YAML ファイルの initialDelaySeconds フィールド。このフィールドは、コンテナの起動後、最初のプローブが実行されるまでの待機時間(秒単位)を指定します。デフォルト値:15。
期間(秒):YAML ファイルの periodSeconds フィールド。このフィールドは、プローブが実行される時間間隔(秒単位)を指定します。デフォルト値:10。最小値:1。
タイムアウト(秒):YAML ファイルの timeoutSeconds フィールド。このフィールドは、プローブがタイムアウトするまでの時間(秒単位)を指定します。デフォルト値:1。最小値:1。
正常なしきい値:プローブの失敗後、コンテナが正常と見なされるまでに発生する必要がある連続成功の最小数。デフォルト値:1。最小値:1。Liveness プローブの場合、このパラメータは 1 に設定する必要があります。
異常なしきい値:成功後、コンテナが異常と見なされるまでに発生する必要がある連続失敗の最小数。デフォルト値:3。最小値:1。
コマンド
コンテナでプローブコマンドを実行して、コンテナのヘルスステータスを確認します。次のパラメータを構成できます。
コマンド:コンテナのヘルスステータスを確認するために実行されるプローブコマンド。
初期遅延(秒):YAML ファイルの initialDelaySeconds フィールド。このフィールドは、コンテナの起動後、最初のプローブが実行されるまでの待機時間(秒単位)を指定します。デフォルト値:5。
期間(秒):YAML ファイルの periodSeconds フィールド。このフィールドは、プローブが実行される時間間隔(秒単位)を指定します。デフォルト値:10。最小値:1。
タイムアウト(秒):YAML ファイルの timeoutSeconds フィールド。このフィールドは、プローブがタイムアウトするまでの時間(秒単位)を指定します。デフォルト値:1。最小値:1。
正常なしきい値:プローブの失敗後、コンテナが正常と見なされるまでに発生する必要がある連続成功の最小数。デフォルト値:1。最小値:1。Liveness プローブの場合、このパラメータは 1 に設定する必要があります。
異常なしきい値:成功後、コンテナが異常と見なされるまでに発生する必要がある連続失敗の最小数。デフォルト値:3。最小値:1。
オプション:[ライフサイクル] セクションで、コンテナのライフサイクルを構成できます。
コンテナのライフサイクルを構成するには、開始、開始後、および停止前のパラメータを指定できます。詳細については、「コンテナライフサイクルイベントにハンドラをアタッチする」をご参照ください。
パラメータ
説明
開始
コンテナが起動する前に有効になるコマンドとパラメータを指定します。
開始後
コンテナが起動した後に有効になるコマンドを指定します。
停止前
コンテナを終了するコマンドを指定します。
オプション:[ボリューム] セクションで、コンテナにマウントするボリュームを構成します。
オプション:[ログ] セクションで、[ログ構成] を指定し、収集されたログに [カスタムタグ] を追加できます。
パラメータ
説明
収集構成
ログストア:収集されたログデータを保存するために、Log Service にログストアを作成します。
コンテナ内のログパス(stdout に設定可能):ログを収集する Stdout またはパスを指定します。
stdout ファイルを収集する:stdout を指定すると、stdout ファイルが収集されます。
テキストログ:コンテナの指定されたパスにあるログが収集されることを指定します。この例では、
/var/log/nginx
がパスとして指定されています。パスにはワイルドカード文字を使用できます。
カスタムタグ
カスタムタグを追加することもできます。タグは、ログが収集されるときにコンテナのログに追加されます。ログの分析とフィルタリングのために、コンテナログにカスタムタグを追加できます。
[次へ] をクリックして、[詳細設定] ウィザードページに進みます。
手順 3:詳細設定を構成する
[詳細設定] ウィザードページで、アクセス制御、スケーリング、スケジューリング、アノテーション、およびラベルの設定を構成します。
[アクセス制御] セクションで、バックエンドポッドを公開するためのアクセス制御設定を構成できます。
また、バックエンドポッドをインターネットに公開する方法を指定することもできます。この例では、NGINX アプリケーションをインターネットに公開するために、ClusterIP サービスと Ingress が作成されます。
サービスを作成するには、[サービス] の右側にある [作成] をクリックします。[作成] ダイアログボックスで、パラメータを設定します。
Ingress を作成するには、[Ingress] の右側にある [作成] をクリックします。[作成] ダイアログボックスで、パラメータを設定します。
オプション:[スケーリング] セクションで、[HPA] を有効にして、変動するワークロードを処理できます。
Horizontal Pod Autoscaler (HPA) は、CPU およびメモリ使用量メトリックに基づいて、ACS クラスタ内のポッドの数を自動的にスケーリングできます。
説明HPA を有効にするには、コンテナに必要なリソースを構成する必要があります。そうしないと、HPA は有効になりません。
パラメータ
説明
メトリック
[CPU 使用率] または [メモリ使用率] を選択します。選択したリソースタイプは、[必要なリソース] フィールドで指定したものと同じである必要があります。
条件
リソース使用量のしきい値を指定します。HPA は、しきい値を超えるとスケールアウトイベントをトリガーします。
最大レプリカ数
アプリケーションをスケーリングできる複製ポッドの最大数。
最小レプリカ数
実行する必要がある複製ポッドの最小数。
コンテナ定時スケーリング (CronHPA) は、スケジュールされた時間に ACS クラスタをスケーリングできます。CronHPA を有効にする前に、最初に ack-kubernetes-cronhpa-controller をインストールする必要があります。CronHPA の詳細については、「コンテナ定時スケーリング (CronHPA)」をご参照ください。
オプション:[ラベル、アノテーション] セクションで、[追加] をクリックしてポッドラベルとアノテーションを追加できます。
[作成] をクリックします。
手順 4:アプリケーション情報を表示する
アプリケーションが作成された後、表示されるページで [詳細を表示] をクリックして、デプロイメントの詳細を表示できます。
[デプロイメント] ページで情報を確認することもできます。デプロイメントの名前をクリックするか、[アクション] 列の [詳細] をクリックして、詳細ページに移動します。
YAML テンプレートを使用する
ACS オーケストレーションテンプレートでは、アプリケーションの実行に必要なリソースオブジェクトを定義し、ラベルセレクタなどのメカニズムを構成して、リソースオブジェクトをアプリケーションにオーケストレートする必要があります。
このセクションでは、オーケストレーションテンプレートを使用して、デプロイメントとサービスで構成される NGINX アプリケーションを作成する方法について説明します。デプロイメントはアプリケーションのポッドをプロビジョニングし、サービスはバックエンドポッドへのアクセスを管理します。
ACS コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスタ] ページで、管理するクラスタを見つけ、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションウィンドウで、
を選択します。[デプロイメント] ページの右上隅にある [YAML から作成] をクリックします。
[作成] ページで、テンプレートを構成し、[作成] をクリックします。
[サンプルテンプレート]:ACS は、さまざまな Kubernetes リソースオブジェクトの YAML テンプレートを提供しています。YAML 構文に基づいてカスタムテンプレートを作成して、作成するリソースを定義することもできます。
[ワークロードを作成]:YAML テンプレートをすばやく定義できます。
[既存のテンプレートを使用]:既存のテンプレートをインポートできます。
[テンプレートを保存]:構成したテンプレートを保存できます。
次の YAML ファイルは例です。このファイルを使用して、NGINX アプリケーションを実行するためのデプロイメントを作成できます。デフォルトでは、Classic Load Balancer (CLB) インスタンスが作成されます。
説明ACS は Kubernetes YAML オーケストレーションをサポートしています。
---
を使用してリソースオブジェクトを区切ることができます。これにより、1 つの YAML テンプレートで複数のリソースオブジェクトを定義できます。オプション:デフォルトでは、ボリュームをアプリケーションにマウントすると、マウントポイントのファイルが上書きされます。既存のファイルが上書きされないようにするには、subPath パラメータを追加できます。
[作成] をクリックすると、デプロイステータスを示すメッセージが表示されます。
kubectl
kubectl を使用して、アプリケーションを作成したり、アプリケーションポッドを表示したりできます。
ACS クラスタに接続します。詳細については、「クラスタの kubeconfig ファイルを取得し、kubectl を使用してクラスタに接続する」および「Cloud Shell で kubectl を使用して ACS クラスタを管理する」をご参照ください。
CLI で、次のコマンドを実行してコンテナを起動します。この例では、NGINX Web サーバーが使用されています。
kubectl create deployment nginx --image=registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
次のコマンドを実行して、ポッドの Ingress を作成し、
--type=LoadBalancer
を指定して、Alibaba Cloud が提供するロードバランサを使用します。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