Alibaba Cloud Container Service により Kubernetes クラスターが実行されることで、Web インターフェイスを介した ジョブアプリケーションを作成できます。 この例では、"busybox" という名前の ジョブアプリケーションを作成して、ジョブアプリケーションの機能を解説します。

始める前に

Kubernetes クラスターが作成されている必要があります。 詳しくは、 Kubernetes クラスターの作成をご参照ください。

このタスクについて

ジョブは、バッチ上の存続期間が短いワンオフタスクの処理を行い、バッチタスクで 1 つまたは複数のポッドが正常に終了することを保証します。

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

  • 非並列 ジョブとは 1 つのノードのみ作成するタイプの ジョブです。 ジョブは、ポッドが正常に終了した場合、完了となります。
  • 完了回数が設定されたジョブは、.spec.completions が設定され、複数のポッドが作成されるよう設定されます。 ジョブは、これらの作成されたポッド数が .spec.completions の値に達した場合、完了となります。
  • 作業キューを持つ並列ジョブは、.spec.Parallelism が設定されますが、.spec.completions は設定されません。 このジョブは、少なくとも 1 つのポッドが正常に終了した場合に完了となり、すべてのポッドが終了されます。
  • 完了回数が設定された並列ジョブは .spec.completions および .spec.Parallelism の両方が設定されています。 ジョブの複数のポッドが作業キューを同時に処理します。
.spec.completions および .spec.Parallelism の設定により、ジョブは以下のパターンに分類されます。
このページでの例で作成されるジョブは、完了回数が設定された並列ジョブです。
ジョブパターン 使用例 動作 完了 並列処理
ワンオフジョブ データベースの移行 ジョブによりポッドが作成され、ポッドが正常に終了すると、ジョブが完了します。 1 1
完了回数を設定されたジョブ 作業キューにアクセスするポッド ジョブによりポッドが 1 つずつ作成されます。 ポッドが正常に終了し、終了したポッド数が設定された回数値に達した場合、ジョブが完了します。 2+ 1
完了回数を設定された並列ジョブ 複数のポッドが作業キューを同時に処理します。 ジョブによりポッドが 1 つずつ作成されます。 ポッド数が設定された回数値に達した場合、ジョブが完了します。 2+ 2+
並列ジョブ 複数のポッドが作業キューを同時に処理します。 ジョブにより 1 つまたは複数のポッドが作成されます。 少なくとも 1 つのポッドが正常に終了すると、ジョブが完了します。 1 2+

手順

  1. Container Service コンソールにログインします。
  2. Kubernetes で、左側のナビゲーションウィンドウから、[アプリケーション] > [ジョブ] を選択し、右上角の [イメージから作成] をクリックします。
  3. 基本パラメーターを設定し、[次へ] をクリックします。
    • 名前: アプリケーションの名前を入力します。
    • クラスター: アプリケーションがデプロイされるクラスターを選択します。
    • 名前空間: アプリケーションデプロイが置かれる名前空間を選択します。 デフォルトの名前空間を選択することもできます。
    • タイプ: ジョブ タイプを選択します。
      このページの例では、 ジョブ タイプを選択します。
  4. コンテナーの設定
    アプリケーションのポッドに関して複数のコンテナーを設定できます。
    1. コンテナーパラメーターを設定します。
      • イメージ名: [イメージの選択] をクリックし、表示されたダイアログボックスからイメージを選択し、[OK] をクリックします。 このページの例では、"busybox" イメージを選択します。

        イメージの指定に、domainname/namespace/imagename:tag 形式のプライベートレジストリを入力することもできます。

      • イメージバージョン: イメージバージョンを選択するには、[イメージバージョンの選択] をクリックします。 イメージバージョンを指定しなかった場合、デフォルトでシステムにより最新のバージョンが使用されます。
      • 常にイメージをプルする: Container Service によりデプロイ効率を向上させるためイメージがキャッシュされます。 デプロイ中、新しく指定されたイメージのタグがキャッシュのイメージのタグと一致した場合、Container Service により、同じイメージを再度プルするよりも、キャッシュのイメージを再利用することが優先されます。 そのため、お使いのコードおよびイメージを変更するシナリオの間、イメージタグを編集しなかった場合、ローカルキャッシュ内の一番最初のイメージがアプリケーションデプロイに使用されます。 [常にイメージをプルする] チェックボックスがオンのとき、Container Service により、アプリケーションのデプロイの際、確実に最新のイメージおよびコードを常に使用するためにキャッシュ内のイメージが無視され、イメージが再度プルされます。
      • イメージプルシークレット: プライベートイメージを使用する場合、お使いのイメージがセキュリティ保護されるようにシークレットの使用を推奨します。 詳しくは、イメージシークレットの利用をご参照ください。
      • リソース制限: リソース (CPU およびメモリー) に関する上限を設定します。これにより、アプリケーションによるリソースの過度の占有を防ぐことができます。 CPU はミリコア単位 、1 コアの 1000 分の 1 で計測されます。 メモリーはバイト単位で計測され、Gi、Mi、または Ki となります。
      • リソースリクエスト: アプリケーションに対して確保するリソース (CPU およびメモリー) 量を指定します (ここで指定するリソースはコンテナーに対して占有する量です)。 このパラメーターを設定しない場合、他のサービスまたはプロセスとリソースとの競合が発生します。これにより、アプリケーションがリソース不足により利用できなくなることがあります。
      • Init Container: このチェックボックスをオンにすると、便利なツールを含んだ Init Container が作成されます。 詳細については、https://kubernetes.io/docs/concepts/workloads/pods/init-containers/をご参照ください。
    2. オプション: 環境を設定します。

      キーとバリューのペアを使用し、ポッドに関する環境変数を設定できます。 環境変数は、環境ラベルの追加または、ポッドに関する設定を渡すために使われます。 詳しい情報は、「ポッド変数」をご参照ください。

    3. オプション: ヘルスチェックを設定します。

      Liveness プローブおよび Readiness プローブを設定できます。 Liveness プローブは、いつコンテナーの再起動を行うかを検出します。 Readiness プローブは、コンテナーがトラフィックの受信が可能な状態かを判定します。 ヘルスチェックに関する詳しい情報は、https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probesをご参照ください。

      リクエストメソッド 説明
      HTTP リクエスト このヘルスチェック方法で、HTTP GET リクエストをコンテナーへ送信できます。 以下のパラメーターがサポートされます:
      • プロトコル: HTTP または HTTPS です。
      • パス: アクセスする HTTP サーバーのパスです。
      • ポート: コンテナーにより開放されるアクセスポートの番号または名称です ポート番号は 1 から 65535 である必要があります。
      • HTTP ヘッダー: HTTP リクエストでのカスタマイズされたヘッダーです。 HTTP は複数のヘッダーを同時に送信できます。 HTTP ヘッダーの設定に、キーとバリューのペアを使用できます。
      • 初期遅延 (秒): "initialDelaySeconds" です。コンテナーが起動してから、最初のプローブが待機する秒数を示します。 デフォルト値は 3 です。
      • 期間 (秒):"periodseconds" です。プローブの実行間隔を示しています。 デフォルト値は 10 です。 最小値は 1 です。
      • タイムアウト (秒): "timeoutSeconds" です。プローブのタイムアウトまでの時間を示しています。 デフォルト値は 1 で、最小値は 1 です。
      • 成功しきい値: 失敗したプローブの発生後、プローブが成功した判断するために必要な連続して成功したプローブの最少の数です。 デフォルト値は 1 で、最小値は 1 です。 Liveness プローブには 1 が設定される必要があります。
      • Failure Threshold: 成功したプローブの発生後、プローブエラーと判定するために必要な連続して失敗したプローブの最小の数です。 デフォルト値は 3 です。 最小値は 1 です。
      TCP 接続 ヘルスチェックメソッドを使用した場合、TCP ソケットはコンテナーに送信されます。 さらに、kubelet は指定されたポートにより、コンテナーへのソケットの作成を試みます。 接続が確立された場合、コンテナーは正常であるとみなされます。 接続されなかった場合、異常であるとみなされます。 以下のパラメーターがサポートされます:
      • ポート: コンテナーにより開放されるアクセスポートの番号または名称です ポート番号は 1 から 65535 である必要があります。
      • 初期遅延 (秒): "initialDelaySeconds" です。コンテナーが起動してから、最初の Liveness プローブまたは Readiness プローブの待機時間を秒単位で示します。 デフォルトでは 15 です。
      • 期間 (秒):"periodseconds" です。プローブの実行間隔を示しています。 デフォルト値は 10 です。 最小値は 1 です。
      • タイムアウト (秒): "timeoutSeconds" です。プローブのタイムアウトまでの時間を示しています。 デフォルト値は 1 で、最小値は 1 です。
      • 成功しきい値: 失敗したプローブの発生後、プローブが成功した判断するために必要な連続して成功したプローブの最少の数です。 デフォルト値は 1 で、最小値は 1 です。 Liveness プローブには 1 が設定される必要があります。
      • エラーしきい値: 成功したプローブの発生後、プローブエラーと判定するために必要な連続して失敗したプローブの最小の数です。 デフォルト値は 3 です。 最小値は 1 です。
      コマンドライン ヘルスチェックメソッドにより、コンテナー上でプローブ検出コマンドを実行することにより、コンテナーのヘルスステータスを検出することができます。 以下のパラメーターがサポートされます:
      • コマンド: コンテナーのヘルスステータスを検出するプローブコマンドです。
      • 初期遅延 (秒): "initialDelaySeconds"です。コンテナーが起動してから、最初の Liveness プローブまたは Readiness プローブの待機時間を秒単位で設定します。 デフォルト値は 5 です。
      • 期間 (秒):"periodseconds" です。プローブの実行間隔を示しています。 デフォルト値は 10 です。 最小値は 1 です。
      • タイムアウト (秒): "timeoutSeconds" です。プローブのタイムアウトまでの時間を示しています。 デフォルト値は 1 で、最小値は 1 です。
      • 成功しきい値: 失敗したプローブの発生後、プローブが成功した判断するために必要な連続して成功したプローブの最少の数です。 デフォルト値は 1 で、最小値は 1 です。 Liveness プローブには 1 が設定される必要があります。
      • エラーしきい値: 成功したプローブの発生後、プローブエラーと判定するために必要な連続して失敗したプローブの最小の数です。 デフォルト値は 3 です。 最小値は 1 です。
    4. オプション: ライフサイクルを設定します。

      コンテナーのライフサイクルのコンテナー設定、スタート、ポストスタートおよびプレストップが設定できます。 詳しい情報は、『https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/』をご参照ください。

      • コンテナー設定: [stdin] チェックボックスをオンにすると、コンテナーへの標準入力が有効になります。または、[tty] チェックボックスをオンにすると、コンテナーへの仮想ターミナルを割り当てます。これにより、コンテナーへシグナルを送ることができます。 この 2 つのオプションを同時に選択できます。 つまり、ターミナル (tty) をコンテナー標準入力 (stdin) にバインドすることができます。 たとえば、対話型プログラムは、ユーザーから標準入力を取得でき、取得した標準入力をターミナルに表示させることができます。
      • スタート: コンテナーへの開始前コマンドおよびパラメーターを設定します。
      • ポストスタート: コンテナーへの開始後のコマンドを設定します。
      • プレストップ: コンテナーへの終了前コマンドを設定します。
    5. オプション: データボリュームを設定します。

      ローカルストレージおよびクラウドストレージの設定ができます。

      • ローカルストレージ: HostPath、ConfigMap、シークレットおよびEmptyDirをサポートします。 ローカルストレージのタイプを設定することで、コンテナーパスへマウントソースをマウントできます。 詳しい情報は、『ボリューム』をご参照ください。
      • クラウドストレージ: サポートするクラウドストレージは: クラウドディスク、NAS (Network Attached Storage) および OSS (Object Storage Service) です。
    6. オプション: Log Service を設定します。 収集パラメーターおよびカスタムタグを設定できます。
      Kubernetes クラスターがデプロイされ、クラスターにログプラグインがインストールされていることを確認してください。

      以下のログの収集パラメーターを設定します:

      • Log Store: Logstore を設定します。 Logstore 名を設定後、Log Service 上で Logstore が生成され、収集したログが保存されます。
      • コンテナー上のログパス: このパラメーターを "stdout" に設定、またはログパスを設定できます。
        • stdout: ログパスを "stdout" に設定した場合、コンテナーの標準出力ログを収集できます。
        • テキストログ: コンテナーログパスを設定した場合、上の指定したパスでのテキストログを収集できます。 ワイルドカードを、ログパスのログファイル名の設定に使用できます。

      カスタムタグも設定できます。 カスタムタグはコンテナー出力ログに収集されます。 カスタムタグはコンテナーログのタグ付けに有用で、他の方法での、ログ統計の収集、ログのフィルタリングおよびログ解析を簡単に行うことができます。

  5. コンテナー設定の完了後、[次へ] をクリックします。
  6. 詳細設定を行います。

    ジョブ設定 を設定します。

    パラメーター 説明
    Completions 設定されたジョブによる正常に実行される必要のあるポッド数です。 デフォルト値は 1 です。
    Parallelism 設定されたジョブがいつでも並列化され実行される必要のあるポッド数です。 デフォルト値は 1 です。
    ActiveDeadlineSeconds 設定されたジョブの処理時間の制限です。 この制限時間内にジョブが完了しなかった場合、システムにより ジョブ の終了が試みられます。
    BackoffLimit 設定されたジョブにより、失敗後にポッドを作成するため実行された再試行の数です。 デフォルトでは 6 です。 ジョブが失敗するごとに、ジョブに関連する失敗したポッドが時間遅延後に再生成されます。 時間遅延は時間ごとに急激に増加します。 時間遅延の上限は 6 分です。
    Restart "Never" および "OnFailure" の再起動ポリシーのみサポートされます。
  7. [作成] をクリックします。
  8. ジョブアプリケーションの作成後、デフォルトで新しいページが表示され、含有するオブジェクトと一緒にアプリケーションが作成されたことを確認できます。

    ジョブの詳細を参照するには、[詳細の表示] をクリックします。

    作成処理の間、ステータス列でポッドの作成ステータスを参照できます。 この例では、ジョブの定義により 2 つのポッドが並列で作成されます。

    全てのポッドが作成されるまでお待ちください。
  9. 左上角の、[リストへ戻る] をクリックします。 ジョブページ上で、ジョブの完了時間が表示されます。
    ジョブにより全てのポッドを作成されなかった場合、ジョブページでは ジョブの完了時間が表示されません。