6.3. Job Scheduler for Container(Kubernetes)の使い方

6.3.1. Job Scheduler for Container(K8S/CMD)の使い方

6.3.1.1. Job Scheduler for Container(K8S/CMD)の機能

Job Scheduler for Container(K8S/CMD)とは、Senju/DCのジョブスケジュール機能と連携し、Kubernetesクラスター内のコンテナでコマンドを実行する機能です。

6.3.1.1.1. Kubernetes連携ジョブ(コマンド実行)の制限事項

  • 本機能はLinuxコンテナでのコマンド実行をサポートします。

  • 動作環境サーバー上でkubectlコマンドが実行できる必要があります。

  • コマンドを実行するコンテナにて、shコマンドが利用できる必要があります。

  • コマンド実行対象Podが複数存在する場合は、1Podずつシリアルにコマンドを実行します。

  • コンテナが複数存在するPodではコンテナを指定しない場合、コンテナ名を昇順でソートした最初のコンテナでのみコマンドを実行します。

  • コンテナ内でのコマンドの実行ユーザーは対象Podの設定に依存します。

  • 同一設定でのジョブの再実行時は別プロセスとしてコマンドが実行されます。

  • ジョブのパラメータにスペースを指定することは出来ません。

  • コマンドの実行対象となるPod名、コンテナ名の千手用出力フォーマットでの合計文字数が1024文字を超える場合、千手ジョブは異常終了します。

    • 出力フォーマット: {Pod名}:{コンテナ名},{Pod名}:{コンテナ名},...

6.3.1.2. Kubernetes連携機能の設定

  • 説明

    ジョブスケジュールサブシステムを用いてKubernetes連携機能を使用するための設定を行います。

  • 設定手順

    Kubernetes連携機能を使用するには以下の手順が必要です。

    • kubectlコマンドのインストール

    • kubeconfigファイルの作成

    注釈

    • 具体的な設定手順については、以下の公式ドキュメントを参照下さい。

    • クラウドベンダーが提供するKubernetes環境をご利用の場合は、各ベンダーのドキュメントもあわせてご確認下さい。

6.3.1.3. Kubernetes連携ジョブ(コマンド実行)の利用方法

Kubernetes連携ジョブ(コマンド実行)は、Kubernetes上のコンテナ内で任意のコマンドを実行します。

Kubernetes連携ジョブ(コマンド実行)が起動されると、引数に指定された内容でコンテナにアタッチしてコマンドを実行し、実行結果をジョブログに出力します。

Kubernetes連携ジョブ(コマンド実行)を起動する際に指定する引数には、以下に示す内容を指定して下さい。

sjPEX_CloudFunctions -m K8S
        -kcmd コマンド
        -kp Pod名
        -kc コンテナ名
        -kl セレクター
        -kx コンテキスト
        -kn ネームスペース
        -kk kubeconfigファイル
        -kt タイムアウト
        -kmc 最大実行Pod数

オプション

省略

デフォルト

長さ

説明

-kcmd

不可

コマンド

-kp

Pod名

-kc

コンテナ名

-kl

セレクター

-kx

コンテキスト

-kn

ネームスペース

-kk

kubeconfigファイル

-kt

無制限

タイムアウト(単位:分)

-kmc

1

最大実行Pod数


注釈

  • Senju/DCジョブの起動コマンドの最大文字数は2048文字です。

  • Senju/DCジョブの起動コマンドのパラメータ内にスペースを含めることは出来ません。

6.3.1.3.1. Kubernetes連携ジョブ(コマンド実行) ジョブテンプレートの使い方

ジョブテンプレートとは、ジョブの起動コマンドシーケンスのみを持ち、パラメータ値が未決定であるエンティティです。ジョブテンプレートを用いることにより、ジョブの登録のたびにコマンドシーケンスを入力しなくても、必要なパラメータ値を入力するだけでジョブの作成が行えます。 Job Scheduler for ContainerをSenju/DCのジョブスケジュール機能と連携するために、Job Scheduler for Containerジョブを、Senju/DCのジョブの起動コマンドとして設定します。

Kubernetes連携ジョブ(コマンド実行) ジョブテンプレートを使用し、ジョブの起動コマンドとして利用するには、千手ブラウザのツリービューで、<ドメイン>→“ジョブスケジュール”→“ジョブ”を選択し、ジョブの新規作成を行います。

ジョブの新規作成プロパティウィンドで[ジョブテンプレートを使用]チェックボックスをチェックし、[ジョブテンプレート入力]ボタンを押して下さい。

ジョブテンプレート入力ウィンドで Kubernetes連携ジョブ(コマンド実行) ジョブテンプレートを選択し、各パラメータ値を設定して下さい。

../_images/001.png

図 6.2 Kubernetes連携ジョブ(コマンド実行) ジョブテンプレートの使用


../_images/0021.png

図 6.3 Kubernetes連携ジョブ(コマンド実行) ジョブテンプレートの入力


表 6.1 Kubernetes連携ジョブ(コマンド実行) ジョブテンプレートの入力

パラメータ

説明

コマンド

コンテナ内で実行するコマンドを指定します。省略不可です。

Pod名

コマンドの実行対象となるPod名を指定します。セレクターが指定されている場合は省略可能です。

コンテナ名

コマンドの実行対象となるコンテナ名を指定します。省略可能です。省略された場合は、コンテナ名を昇順でソートした最初のコンテナが対象となります。

セレクター

コマンドの実行対象となるPodのラベルを指定します。Pod名が指定されている場合は省略可能です。

コンテキスト

コマンドの実行対象となるPodが存在するコンテキストを指定します。省略可能です。

ネームスペース

コマンドの実行対象となるPodが存在するネームスペースを指定します。省略可能です。

kubeconfigファイル

kubeconfigファイルを指定します。省略可能です。

タイムアウト

実行するコマンドのタイムアウト時間を指定します。単位は分です。デフォルトでは無制限に実行します。

最大実行Pod数

コマンドを実行するPodの最大数を指定します。パラメータ条件に合致するPodが本パラメータの値より多く存在する場合、本パラメータの値を超えるPodではコマンドは実行しません。デフォルトは1です。

6.3.1.3.2. Kubernetes連携ジョブ(コマンド実行)の処理の流れ(通常時)

Kubernetes連携ジョブ(コマンド実行)がSenju/DCのジョブスケジュールで1つのジョブとして起動されると、 「図 6.4 Kubernetes連携ジョブ(コマンド実行)の処理の流れ」 および 「表 6.2 Kubernetes連携ジョブ(コマンド実行)の処理の流れ」 に示す流れで動きます。

../_images/003.svg

図 6.4 Kubernetes連携ジョブ(コマンド実行)の処理の流れ


表 6.2 Kubernetes連携ジョブ(コマンド実行)の処理の流れ

Senju/DC

ジョブの状態

Kubernetes連携コマンド実行

ジョブの処理内容

メッセージモニタの出力

起動待ち

起動前の状態

稼働中

起動

稼働中

引数に従い、コマンドの実行対象となるPod名・コンテナ名を取得

稼働中

各Podのコンテナ内でコマンドを実行

正常終了

Kubernetes連携ジョブ実行に成功

!PEXC33

Kubernetes連携のジョブ実行に成功しました。

異常終了

Kubernetes連携ジョブ実行に失敗

!PEXC34

Kubernetes連携のジョブ実行に失敗しました。


  1. Kubernetes連携ジョブ(コマンド実行)が起動されると、引数に指定された内容でKubernetes連携ジョブ(コマンド実行)を実行します。

  2. Kubernetes連携ジョブ(コマンド実行)を実行します。

  3. Kubernetes連携ジョブ(コマンド実行)が正しく実行されると、成功した旨のメッセージを出力し、Senju/DCジョブは正常終了します。

  4. Kubernetes連携ジョブ(コマンド実行)が何らかの理由で正しく実行されないと、失敗した旨のメッセージを出力し、Senju/DCジョブは異常終了します。

6.3.1.3.3. Kubernetes連携ジョブ(コマンド実行)の処理の流れ(強制停止時)

Kubernetes連携ジョブ(コマンド実行)は、他のSenju/DCのジョブと同じく強制停止させることができます。

Senju/DCのジョブスケジュールより、Kubernetes連携ジョブ(コマンド実行)を強制停止しても、コンテナ内で実行中のコマンドは実行されたままとなります。

Senju/DCのジョブスケジュールでは、強制停止されたジョブの状態は異常終了となります。