すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ジョブの作成

最終更新日:Dec 09, 2024

ジョブは、複数の短期間の1回限りのタスクを一度に処理して、タスク内の1つ以上のポッドが確実に終了するようにします。 Container Service for Kubernetes (ACK) コンソールでジョブを使用してアプリケーションを作成できます。 このトピックでは、ジョブを使用してbusyboxアプリケーションを作成する方法と、アプリケーションで実行できる操作について説明します。

前提条件

ACKクラスターが作成されます。 詳細については、「ACK管理クラスターの作成」をご参照ください。

ジョブタイプ

Kubernetes は以下のタイプのジョブをサポートします。

  • 非並列ジョブ: ほとんどの場合、ポッドが失敗しない限り、このタイプのジョブは1つのポッドのみを起動します。 ポッドが成功で終了すると、ジョブは完了したと見なされます。

  • 完了数が固定のジョブにゼロ以外の正の値が指定されています。. spec.com pletions. このタイプのジョブは、ポッドを1つずつ開始します。 成功で終了するポッドの数がの値と等しい場合、ジョブは完了したと見なされます。. spec.com pletions.

  • 作業キューを持つ並列ジョブにゼロ以外の正の値が指定されています。. spec.Parallelism. このタイプのジョブは、一度に複数のポッドを起動します。 すべてのポッドが終了し、少なくとも1つのポッドが正常に終了すると、ジョブは完了したと見なされます。 . spec.com pletionsは指定されていません。

  • 完了数が固定の並列ジョブ: このタイプのジョブには両方があります. spec.com pletions. spec.Parallelismを指定します。 ジョブは、一度に複数のポッドを開始して作業キューを処理します。

ジョブは、の設定に基づいてポッドを管理できます。. spec.com pletions. spec.Parallelism次の表で説明されているように。

説明

このページでの例で作成されるジョブは、完了回数が設定された並列ジョブです。

ジョブタイプ

Action

完了

並列性

ワンオフジョブ

データベースの移行

ジョブは1つのポッドのみを起動します。 ポッドが成功で終了すると、ジョブは完了します。

1

1

完了回数を設定されたジョブ

ポッドを1つずつ起動して作業キューを処理する

ジョブはポッドを1つずつ開始します。 ジョブは、成功で終了するポッドの数がf .spec.comのpletionsの値に達すると完了します。

2+

1

完了回数を設定された並列ジョブ

一度に複数のポッドを起動して作業キューを処理する

ジョブは一度に複数のポッドを開始します。 ジョブは、成功で終了するポッドの数がf .spec.comのpletionsの値に達すると完了します。

2+

2+

並列ジョブ

一度に複数のポッドを起動して作業キューを処理する

ジョブは、一度に1つ以上のポッドを開始します。 少なくとも1つのポッドが成功で終了すると、ジョブは完了します。

1

2+

手順

ステップ1: 基本設定の設定

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ワークロード] > [ジョブ] を選択します。

  3. [ジョブ] ページで、[イメージから作成] をクリックします。

  4. [基本情報] ウィザードページで、アプリケーションの基本設定を行います。

    パラメーター

    説明

    名前

    アプリケーションの名前を入力します。 例: busybox.

    タイプ

    [タイプ][ジョブ] に設定します。

    ラベル

    アプリケーションにラベルを追加します。 ラベルは、アプリケーションを識別するために使用される。

    注釈

    アプリケーションに注釈を追加します。

    タイムゾーンの同期

    ノードとコンテナ間でタイムゾーンを同期するかどうかを指定します。

  5. [次へ] をクリックしてコンテナーを設定します。

手順2: コンテナーの設定

[コンテナー] ウィザードページで、コンテナーのイメージ、リソース、ポート、環境変数、ヘルスチェック、ライフサイクル、ボリューム、およびログを設定します。

説明

コンテナーを追加するには、Container1の右側にある [コンテナーの追加] をクリックします。

  1. コンテナーを設定します。

    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インスタンスを選択する必要があります。

        • アーティファクトセンター: アーティファクトセンターには、基本オペレーティングシステムイメージ、基本言語イメージ、およびアプリケーションコンテナ化用のAIおよびビッグデータ関連イメージが含まれています。 この例では、NGINX画像が選択されている。 詳細については、「アーティファクトセンターの概要」をご参照ください。

          説明

          Container Registryのアーティファクトセンターには、Alibaba CloudまたはOpenAnolisによって更新およびパッチ適用される基本イメージがあります。 他の要件や質問がある場合は、DingTalkグループ (ID 33605007047) に参加してテクニカルサポートをリクエストしてください。

        プライベートレジストリに保存されている画像のアドレスを入力することもできます。 イメージアドレスは、domainname/namespace/imagename:tagの形式で指定する必要があります。

      • 画像プルポリシー

        画像を取得するためのポリシー。 有効な値:

        • IfNotPresent: プルするイメージがオンプレミスマシンで見つかった場合、オンプレミスマシンのイメージが使用されます。 それ以外の場合、ACKはイメージレジストリからイメージをプルします。

        • 常に: ACKは、アプリケーションが展開または展開されるたびに、Container Registryからイメージを取得します。

        • Never: ACKは、オンプレミスマシン上の画像のみを使用します。

        説明

        [イメージプルポリシー] を選択した場合、デフォルトでイメージプルポリシーは適用されません。

      • Set Image Pull Secret

        [イメージプルシークレットの設定] をクリックすると、プライベートレジストリからイメージをプルするためのシークレットを設定できます。

      リソース制限

      アプリケーションが使用できるCPU、メモリ、および一時的なストレージリソースの最大量。 リソース制限は、アプリケーションが過剰な量のリソースを占有することを防止する。 リソース制限の設定方法の詳細については、「リソースプロファイリング」をご参照ください。

      必要なリソース

      アプリケーション用に予約されているCPU、メモリ、および一時的なストレージリソースの量。 これらのリソースは、アプリケーションのポッド専用であり、他のアプリケーションによってプリエンプトすることはできません。 リソースを予約する方法の詳細については、「リソースプロファイリング」をご参照ください。

      コンテナー開始パラメーター

      • stdin: 開始パラメーターを標準入力 (stdin) としてコンテナーに送信することを指定します。

      • tty: 仮想ターミナルで定義された開始パラメーターをコンテナーに送信することを指定します。

      2つのオプションは通常一緒に使用されます。 この場合、仮想端末 (tty) は、コンテナのstdinに関連付けられる。 例えば、対話型プログラムは、ユーザからstdinを受信し、端末にコンテンツを表示する。

      特権コンテナ

      • [特権コンテナ] を選択すると、コンテナに特権=trueが設定され、特権モードが有効になります。

      • [特権コンテナ] を選択しない場合、特権=falseがコンテナに設定され、特権モードが無効になります。

      コンテナー初期化

      initコンテナを作成するには、このオプションを選択します。

      Initコンテナーを使用して、アプリケーションコンテナーの起動をブロックまたは延期できます。 initコンテナーの起動後にのみ、ポッド内のアプリケーションコンテナーが同時に起動します。 たとえば、initコンテナーを使用して、アプリケーションが依存するサービスの可用性を確認できます。 アプリケーションイメージによって提供されていないツールまたはスクリプトをinitコンテナーで実行して、アプリケーションコンテナーのランタイム環境を初期化できます。 たとえば、ツールやスクリプトを実行して、カーネルパラメーターを設定したり、設定ファイルを生成したりできます。 詳細については、次をご参照ください: Initコンテナー

    2. オプション: [ポート] セクションで、[追加] をクリックしてコンテナーポートを追加します。

      パラメーター

      説明

      名前

      コンテナーポートの名前。

      コンテナポート

      公開するコンテナーポートの番号または名前。 ポート番号の有効値: 1 ~ 65535

      プロトコル

      有効な値: TCPおよびUDP。

    3. オプション: [環境] セクションで、[追加] をクリックして環境変数を追加します。

      環境変数は、キーと値のペアで設定できます。 環境変数は、コンテナーにポッド構成を適用するために使用されます。 詳細については、「ポッド変数」をご参照ください。

      パラメーター

      説明

      タイプ

      追加する環境変数の型。 有効な値:

      • カスタム

      • 設定マップ

      • 秘密

      • 値 /ValueFrom

      • ResourceFieldRef

      ConfigMapsまたはSecretsを選択した場合、選択したConfigMapまたはSecretのすべてのデータをコンテナー環境変数に渡すことができます。 この例では、Secretsが選択されています。 [タイプ] ドロップダウンリストから [秘密] を選択し、[値] /[値] ドロップダウンリストから秘密を選択します。 デフォルトでは、選択したシークレットのすべてのデータが環境変数に渡されます。环境变量

      この場合、アプリケーションのデプロイに使用されるYAMLファイルには、選択したシークレットのすべてのデータを参照する設定が含まれています。yaml

      ResourceFieldRefを選択した場合、resourceFieldRefパラメーターが指定され、ポッド仕様からリソース値を参照し、リソース値を環境変数としてコンテナーに渡します。 次のYAMLファイルに例を示します。

      image

      変数キー

      環境変数の名前。

      値 /ValueFrom

      環境変数の値。

    4. オプション: [ヘルスチェック] セクションで、[ライブネス][準備完了][オンデマンドでの起動] を有効にします。

      詳細については、「Liveness、Readiness、Startup Probesの設定」をご参照ください。

      パラメーター

      リクエストタイプ

      説明

      • Liveness: Livenessプローブを使用して、コンテナをいつ再起動するかを判断します。

      • Readiness: Readinessプローブを使用して、コンテナがトラフィックを受信する準備ができているかどうかを判断します。

      • スタートアップ: スタートアッププローブは、コンテナをいつ開始するかを決定するために使用されます。

        説明

        スタートアッププローブは、Kubernetes 1.18以降でのみサポートされます。

      HTTP

      HTTP GETリクエストをコンテナに送信します。 以下のパラメーターを設定できます。

      • プロトコル: 要求が送信されるプロトコル。 有効な値: HTTPおよびHTTPS

      • パス: サーバー上で要求されたHTTPパス。

      • ポート: 公開するコンテナーポートの番号または名前。 ポート番号の有効値: 1 ~ 65535

      • HTTPヘッダー: HTTPリクエストのカスタムヘッダー。 ヘッダーの重複は許可されています。 HTTPヘッダーは、キーと値のペアで指定できます。

      • 初期遅延: YAMLファイルのinitialDelaySecondsフィールド。 このフィールドは、コンテナが開始されてから最初のプローブが実行されるまでの待機時間を指定します。 デフォルト値: 3。 単位は秒です。

      • Period (s): YAMLファイルのperiodSecondsフィールド。 このフィールドは、プローブが実行される間隔を指定します。 デフォルト値は 10 です。 最小値:1 単位は秒です。

      • Timeout (s): YAMLファイルのtimeoutSecondsフィールド。 このフィールドは、プローブがタイムアウトするまでの期間を指定します。 デフォルト値は 1 です。 最小値:1 単位は秒です。

      • Healthy Threshold: 失敗したプローブの後にコンテナーが正常と見なされる前に発生する必要がある連続成功の最小数。 デフォルト値は 1 です。 最小値:1 有効性チェックの場合、このパラメーターは1に設定する必要があります。

      • 異常しきい値: コンテナが成功した後に異常と見なされる前に発生しなければならない連続した失敗の最小数。 デフォルト値:3 最小値:1

      TCP

      コンテナにTCPソケットを送信します。 kubeletは指定されたポートでソケットを開こうとします。 接続が確立された場合、コンテナーは正常とみなされます。 さもなければ、容器は不健康とみなされる。 以下のパラメーターを設定できます。

      • ポート: 開くコンテナポートの番号または名前。 ポート番号の有効値: 1 ~ 65535

      • 初期遅延: YAMLファイルのinitialDelaySecondsフィールド。 このフィールドは、コンテナが開始されてから最初のプローブが実行されるまでの待機時間を指定します。 デフォルト値: 15。 単位は秒です。

      • Period (s): YAMLファイルのperiodSecondsフィールド。 このフィールドは、プローブが実行される間隔を指定します。 デフォルト値は 10 です。 最小値:1 単位は秒です。

      • Timeout (s): YAMLファイルのtimeoutSecondsフィールド。 このフィールドは、プローブがタイムアウトするまでの時間を指定します。 デフォルト値は 1 です。 最小値:1 単位は秒です。

      • Healthy Threshold: 失敗したプローブの後にコンテナーが正常と見なされる前に発生する必要がある連続成功の最小数。 デフォルト値は 1 です。 最小値:1 有効性チェックの場合、このパラメーターは1に設定する必要があります。

      • 異常しきい値: コンテナが成功した後に異常と見なされる前に発生しなければならない連続した失敗の最小数。 デフォルト値:3 最小値:1

      コマンド

      コンテナーでプローブコマンドを実行し、コンテナーのヘルスステータスを確認します。 以下のパラメーターを設定できます。

      • Command: コンテナーのヘルスステータスを確認するために実行されるプローブコマンドです。

      • 初期遅延: YAMLファイルのinitialDelaySecondsフィールド。 このフィールドは、コンテナが開始されてから最初のプローブが実行されるまでの待機時間を指定します。 既定値:5 単位は秒です。

      • Period (s): YAMLファイルのperiodSecondsフィールド。 このフィールドは、プローブが実行される間隔を指定します。 デフォルト値は 10 です。 最小値:1 単位は秒です。

      • Timeout (s): YAMLファイルのtimeoutSecondsフィールド。 このフィールドは、プローブがタイムアウトするまでの時間を指定します。 デフォルト値は 1 です。 最小値:1 単位は秒です。

      • Healthy Threshold: 失敗したプローブの後にコンテナーが正常と見なされる前に発生する必要がある連続成功の最小数。 デフォルト値は 1 です。 最小値:1 有効性チェックの場合、このパラメーターは1に設定する必要があります。

      • 異常しきい値: コンテナが成功した後に異常と見なされる前に発生しなければならない連続した失敗の最小数。 デフォルト値:3 最小値:1

    5. オプション: [ライフサイクル] セクションで、コンテナーのライフサイクルを設定します。

      コンテナーのライフサイクルには、開始、開始後、停止前のパラメーターを設定できます。 詳細については、「Container Lifecycle Eventsへのハンドラのアタッチ」をご参照ください。生命周期

      パラメーター

      説明

      開始

      コンテナーが起動する前に有効になるコマンドとパラメーターを指定します。

      起動後

      コンテナーの起動後に有効になるコマンドを指定します。

      停止前

      コンテナーが停止する前に有効になるコマンドを指定します。

    6. オプション: [ボリューム] セクションで、ローカルボリュームまたは永続ボリュームクレーム (PVC) を追加します。

      パラメーター

      説明

      ローカルストレージの追加

      [PVタイプ] ドロップダウンリストから、HostPath、ConfigMap、Secret、またはEmptyDirを選択できます。 次に、マウントソースとコンテナパスのパラメーターを設定して、ボリュームをコンテナにマウントします。 詳細については、「Volumes」をご参照ください。

      PVCを追加

      永続ボリュームクレーム (PVC) を使用して永続ボリューム (PV) をマウントできます。 PVをマウントするPVCを選択する前に、PVCを作成する必要があります。 詳細については、「PVCの作成」をご参照ください。

      この例では、ディスクボリュームはコンテナーの /tmpパスにマウントされています。 配置数据卷

    7. オプション: [ログ] セクションで、ログ収集を設定し、カスタムタグを追加します。

      重要

      クラスターにSimple Log Serviceエージェントがインストールされていることを確認します。

      パラメーター

      説明

      コレクションの設定

      Logstore: 収集したログを保存するためにSimple Log ServiceにLogstoreを作成します。

      コンテナー内のログパス: ログデータを収集するためのstdoutまたはコンテナーパスを指定します。

      • stdoutファイルの収集: stdoutを指定すると、stdoutファイルが収集されます。

      • Text Logs: コンテナの指定されたパスのログが収集されることを指定します。 この例では、パスとして /var/log/nginxが指定されています。 パスにはワイルドカード文字を使用できます。

      カスタムタグ

      カスタムタグを追加することもできます。 タグは、ログが収集されるときにコンテナのログに追加されます。 カスタムタグは、収集したログのフィルタリングと分析に役立ちます。

    8. クリック次へをクリックして [高度なウィザード] ページに移動します。

ステップ3: 詳細設定の設定

  1. ジョブのステータスは、[ジョブ設定] セクションで設定できます。

    パラメーター

    説明

    Completions

    YAMLファイルのCOMPLETIONSフィールド。 このパラメータは、ジョブを実行する必要があるポッドの数を指定します。 デフォルト値は 1 です。

    並列処理

    ジョブをいつでも並列に実行する必要があるポッドの数。 デフォルト値は 1 です。

    タイムアウト

    YAMLファイルのactiveDeadlineSecondsフィールド。 ジョブの制限時間を指定します。 ジョブが制限時間内に完了しない場合、システムはジョブを終了しようとします。

    BackoffLimit

    YAMLファイルのbackoffLimitパラメーター。 このパラメーターには、ポッド障害時にジョブによって実行される再試行の回数を指定します。 ポッドが故障するたびに、最大6分まで指数関数的に増加する遅延でポッドが再作成されます。 デフォルト値: 6。

    Restart

    再起動ポリシー。 有効な値: NeverおよびOn Failure

  2. オプション: [ラベル、注釈] セクションで、[追加] をクリックしてポッドにラベルと注釈を追加します。

    パラメーター

    説明

    ポッドラベル

    ポッドに追加するラベル。ポッドを識別します。

    ポッド注釈

    ポッドに追加されるアノテーション。

  3. クリック作成.

ステップ4: アプリケーションの確認

  1. アプリケーションがデプロイされると、[完了] ウィザードページにリダイレクトされます。 アプリケーションのリソースオブジェクトが表示されます。

    [詳細の表示] をクリックすると、アプリケーションの詳細を表示できます。 この例では、2つのポッドがジョブ設定に基づいて並列に実行するように作成されています。

    全てのポッドが作成されるまでお待ちください。

  2. [ワークロード] > [ジョブ] をクリックします。 [ジョブ] ページで、ジョブが完了した時刻を表示できます。

    説明

    ジョブの終了時刻は、ジョブのすべてのポッドが作成されるまで表示されません。

次のステップ

ジョブの作成後、次の操作を実行できます。

管理するアプリケーションを見つけて、アプリケーション名をクリックするか、[操作] 列の [詳細] をクリックします。 詳細ページでは、アプリケーションをスケーリングして更新できます。 アプリケーションのYAMLファイルを表示することもできます。

  • スケール: アプリケーションの詳細ページで、[スケール] をクリックして、必要なポッド数にアプリケーションをスケールします。

  • YAMLファイルの表示: アプリケーションの詳細ページで、[YAMLで表示] をクリックします。 その後、YAMLファイルを更新およびダウンロードできます。 YAMLファイルをテンプレートとして保存することもできます。

  • 更新: アプリケーションの詳細ページで、image.pngアイコンをクリックしてアプリケーション情報を更新します。

削除するアプリケーションを見つけて、[操作] 列の [詳細] > [削除] を選択します。