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