タスクスケジューラcronジョブをK8S

何cronジョブもの?

cronジョブ管理、すなわち、仕事の時間に基づいて:

  • 任意の時点で一度だけ実行します

  • 時間の与えられた時点で、定期的に実行します

cronジョブのようなオブジェクトのcrontab(cronのTable)ファイル行。これは、定期的に指定したスケジュールに従ってジョブを実行します

注:スケジュールには、疑問符(?)とアスタリスク(*意味が)同じですが、与えられたフィールドの値が使用可能な任意の値である表します。

注意: ScheduledJob資源の導入は、1.4バージョンをKubernetesが、バージョン1.5に変更cronジョブ。

次のように典型的な使い方は以下のとおりです。

  • タイムスケジュールジョブ内の指定された時点で実行します

  • データベースのバックアップ、電子メールを送信します。たとえば、定期的な実行中のジョブを作成します。

前提条件

Kubernetesクラスタ、バージョン(cronジョブ用)> =(ScheduledJob用)1.4、> = 1.5を使用するときは(詳細については、APIのバージョンを有効または無効にクラスタ化するために参照してください)APIサーバーの起動時に、オプションを渡すことで--runtime-config=batch/v2alpha1=true/バッチをオンにすることができますv2alpha1 API。

cronジョブを作成します。

ここではcronジョブの一例です。これは、現在の時刻とハロー挨拶出力をプリントアウトし、毎分ジョブを実行します。

%含むcode.html言語=「YAML」ファイル=「cronjob.yaml」ghlink =「/ドキュメント/コンセプト/ワークロード/コントローラ/ cronjob.yaml」%}

サンプルcronジョブをダウンロードして実行するには、次のコマンドを実行します。


$は、-f ./cronjob.yaml作成kubectl 
cronジョブ「hello」を作成

また、使用することは、kubectl runcronジョブ、完全な構成を記述する必要はありませんを作成します。


/ binに/ shの-c "; Kubernetesクラスタからこんにちはエコー日"  -  $は--scheduleハロー= "* / 1 * * * *" --restart = ONFAILURE --image = busyboxのを実行kubectl 
cronジョブ「hello」を作成

あなたはcronジョブを作成した後、次のコマンドで、そのステータスを取得しました:

$ kubectl GET cronジョブハロー 
NAMEスケジュールはACTIVE LAST-スケジュールをSUSPEND 
こんにちは* / 1 * * * *偽0 <なし>

アクティブなジョブ、またスケジュールされたジョブでもない、上記に示したように。

分については、ジョブの作成を待って観察します:

$ kubectl GETジョブ--watch 
NAMEたい[成功AGE 
こんにちは-4111706356 1 1 2S

今、あなたは仕事のために名前がハローを実行している見ることができます。我々は見て停止し、再びジョブのステータス情報を取得できます。


$ kubectl GET cronジョブハロー 
NAMEスケジュールはACTIVE LAST-スケジュールをSUSPEND 
こんにちは* / 1 * * * *偽0月、2016年8月29日午後02時34分00秒-0700

あなたは時に「こんにちは」ジョブの名前が表示されるはずLAST-SCHEDULE予定された時間に指定された点。現在の仕事(アクティブ)0アクティブ、ジョブが完了または失敗にスケジュール実行することを説明してきました。

さて、ポッド雇用創出が最後の予定されている、あなたはポッドのところ、標準出力を確認できます。注、ジョブポッド名と名前が同じではありません。

#あなたのシステムのジョブ名に「ハロー-4111706356」を置き換え  
$ポッド= $(ポッドを取得kubectl --selector =ジョブ名=ハロー4111706356 --output = jsonpath = {items..metadata.name。}) 
$ $ポッドをエコーハロー-4111706356-o9qcm 

$ kubectlログポッド 
月8月29日午後9時34分09秒UTC 2016 
こんにちはKubernetesクラスタから

cronジョブを削除します。

もはやcronジョブを必要としたら、あなたは簡単に使用することはできませんkubectl、それを削除するには、コマンドを:

$は、ハローcronジョブを削除kubectl 
cronジョブ「hello」を削除

これは、作成中のジョブを終了します。しかし、仕事の操作が終了されることはありません、仕事や自分のポッドを削除しません。仕事やポッドをクリーンアップするためには、すべてのcronジョブ雇用創出をリストする必要があるし、それらを削除します。

$ kubectlは、仕事を得ます 
NAMEたい[成功AGEのhello-1201907962 1 1 11メートル 
こんにちは-1202039034 1 1 8メートル... 


$ジョブを削除kubectlハロー-1201907962ハロー-1202039034 ... 
削除されたジョブ "のhello-1201907962" 
削除されたジョブ "のhello-1202039034"

ジョブを削除すると、ジョブによって作成されたポッドが削除されます。「こんにちは」の名前のすべてがcronジョブは、ジョブの作成が接頭辞文字列「hello-」と命名されていることに注意してください。あなたは現在の名前空間でのジョブをすべて削除したい場合は、注文することができkubectl delete jobs --all、すぐにそれらを削除します。

cronジョブの制限

cronジョブは、各スケジューリング期間で実行おそらくジョブオブジェクトを作成します。私たちは言う、おそらく 2つのジョブは、特定の環境で作成することができるので、またはジョブを作成していません。私たちは、このようなケースはあまり起こるが、それは完全に回避することはできませんしてみてください。そのため、ジョブを作成するための操作がなければなりません冪等_ _。

仕事ポッドは、それが作成並列度に応じて、ポッドを作成し、ポッドのこのグループの成否を決定するために再試行する責任があります。cronジョブは、ポッドをチェック行かないだろう。

cronジョブ規程を書きます

そして、他のKubernetes同じ構成、cronジョブに必要なapiVersionkindそしてmetadataこれらの三つのフィールド。設定ファイルを実装する方法の最新情報については、リファレンスドキュメントは、アプリケーションを展開、設定およびkubectlコンテナ管理リソースを使用しています。

cronジョブもする必要が.specセグメント。

注意:すべての修正cronジョブ、特にその.spec変更は、唯一の効果あなたが次回実行時間がかかります。

派遣

.spec.scheduleそれは.spec、例えば、その値の文字列がクーロンワード形式で、フィールドに必要:0 * * * *、または@hourly指定された時間スケジュールジョブに応じて作成され、実行されます。

ジョブテンプレート

.spec.jobTemplate別のある.spec必須フィールドの。これは、ジョブテンプレートです。ことを除いて、それは入れ子にすることができ、持っていないapiVersionか、kindそれは、外のフィールド仕事は同じパターン(スキーマ)を有すると。ジョブの仕様を記述するためのリファレンス。

スタートジョブの期間(第2レベル)

.spec.startingDeadlineSecondsフィールドはオプションです。それは失敗とみなされます何らかの理由でスケジュールされた時刻を逃した場合は、[ジョブの実行時間を欠場、スタートジョブの期間(第2レベル)を表しています。指定されていない場合は、時間制限はありません。

同時方式

.spec.concurrencyPolicyフィールドはオプションです。これは、cronジョブは、ジョブが作成され、同時実行を処理する方法を指定します。あなただけが次のいずれかを指定することができます:

  • Allow(デフォルト):同時にジョブを実行することができます

  • Forbid:前の1が完了していない場合は、同時に実行しないでください、そして、次へ進みます

  • Replace:現在実行中のジョブをキャンセルし、新しいものと交換すること

現在のポリシーにのみ作成されたcronジョブジョブを適用することができます。複数のcronジョブがある場合は、それらの間の雇用創出は常に同時に実行することが許可されています。

サスペンド

.spec.suspendフィールドはオプションです。設定した場合true、後続のすべての実行は中断されます。仕事は、それが開始された動作しません。デフォルト値false

ジョブ履歴の制限

.spec.successfulJobsHistoryLimitそして、.spec.failedJobsHistoryLimitこれら2つのフィールドはオプションです。彼らは、ジョブの保持と完全な失敗の制限回数を指定することができます。

デフォルトでは、ジョブのすべての成功と失敗が保持されますが、制限はありません。cronジョブを実行するときしかし、すぐに仕事の多くを蓄積し、我々はこれらの二つのフィールドの値を設定することをお勧め。制限値を設定し0、ジョブの関連するタイプの完了が保持されません後、。


おすすめ

転載: blog.51cto.com/breaklinux/2445802