[解決済み] KubernetesのジョブにおけるbackoffLimitの理解
質問
を作成しました。
Cronjob
を、kubernetesでschedule(
8 * * * *
) で、ジョブの
backoffLimit
はデフォルトで6、ポッドの
RestartPolicy
から
Never
の場合、Podは意図的にFAILになるように設定されています。私の理解では、(PodSpecに
restartPolicy : Never
) ジョブコントローラは
backoffLimit
の数のポッドを作成し、そのジョブを
Failed
で6ポッドになると予想していました。
Error
の状態になります。
実際のJobの状態です。
status:
conditions:
- lastProbeTime: 2019-02-20T05:11:58Z
lastTransitionTime: 2019-02-20T05:11:58Z
message: Job has reached the specified backoff limit
reason: BackoffLimitExceeded
status: "True"
type: Failed
failed: 5
失敗したポッドが6つではなく、5つしかなかったのはなぜですか?それとも、私の理解では
backoffLimit
が間違っているのでしょうか?
解決方法は?
要するに、cronjobのスケジュール期間が短すぎるため、作成されたすべてのポッドが表示されない可能性があります。
で説明したように ドキュメント :
ジョブに関連付けられている失敗したPodは、ジョブによって再作成されます。 コントローラは、指数関数的なバックオフ遅延(10秒、20秒、40秒...)を上限として 6分です。バックオフカウントは、新しい故障したPodがない場合、リセットされます。 次のステータスチェックまでに表示されます。
ジョブコントローラがポッドを再作成する前に新しいジョブがスケジュールされた場合(前回の失敗後の遅延を考慮して)、ジョブコントローラは再び1からカウントを開始します。
GKEで以下を使用して、あなたの問題を再現しました。
.yaml
:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hellocron
spec:
schedule: "*/3 * * * *" #Runs every 3 minutes
jobTemplate:
spec:
template:
spec:
containers:
- name: hellocron
image: busybox
args:
- /bin/cat
- /etc/os
restartPolicy: Never
backoffLimit: 6
suspend: false
このジョブが失敗するのは、ファイル
/etc/os
が存在しない。
そして、以下がその出力です。
kubectl describe
を、1つのジョブに対して実行しました。
Name: hellocron-1551194280
Namespace: default
Selector: controller-uid=b81cdfb8-39d9-11e9-9eb7-42010a9c00d0
Labels: controller-uid=b81cdfb8-39d9-11e9-9eb7-42010a9c00d0
job-name=hellocron-1551194280
Annotations: <none>
Controlled By: CronJob/hellocron
Parallelism: 1
Completions: 1
Start Time: Tue, 26 Feb 2019 16:18:07 +0100
Pods Statuses: 0 Running / 0 Succeeded / 6 Failed
Pod Template:
Labels: controller-uid=b81cdfb8-39d9-11e9-9eb7-42010a9c00d0
job-name=hellocron-1551194280
Containers:
hellocron:
Image: busybox
Port: <none>
Host Port: <none>
Args:
/bin/cat
/etc/os
Environment: <none>
Mounts: <none>
Volumes: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulCreate 26m job-controller Created pod: hellocron-1551194280-4lf6h
Normal SuccessfulCreate 26m job-controller Created pod: hellocron-1551194280-85khk
Normal SuccessfulCreate 26m job-controller Created pod: hellocron-1551194280-wrktb
Normal SuccessfulCreate 26m job-controller Created pod: hellocron-1551194280-6942s
Normal SuccessfulCreate 25m job-controller Created pod: hellocron-1551194280-662zv
Normal SuccessfulCreate 22m job-controller Created pod: hellocron-1551194280-6c6rh
Warning BackoffLimitExceeded 17m job-controller Job has reached the specified backoff limit
ポッドの生成の遅れに注意
hellocron-1551194280-662zv
と
hellocron-1551194280-6c6rh
.
関連
-
[解決済み】Kubernetes: kubectl run: コマンドが見つかりません。
-
[解決済み] no endpoints available for service \"kubernetes-dashboard"
-
[解決済み] kubernetes UnexpectedAdmissionError ロールアウト後。
-
kubernate が nginx-ingress-controller をデプロイし、ingress ポリシーを定義する。
-
[解決済み] kubeadm init は kubelet が実行中または健全でないことを表示します。
-
[解決済み] Kubernetes: すべてのポッドとそのノードをリストアップする
-
[解決済み] Docker ComposeとKubernetesの違いとは?
-
[解決済み] ApacheのMesosとGoogleのKubernetesの違いとは?
-
[解決済み】すべてのkubernetesネームスペースのすべてのPodを削除するコマンド
-
[解決済み] Kubernetes Scheduled Jobを手動で起動するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] no endpoints available for service \"kubernetes-dashboard"
-
[解決済み] Istio Ingressで "no healthy upstream "が発生する。
-
kubenetes: ポッドにバインドされていないPersistentVolumeClaimsがあります。
-
kubernetesでContainerCreating状態の原因究明と解決方法
-
[解決済み] ヘッドレスサービスとは何か、何をするのか、何を達成するのか、そしてその正当な使用例とは何か?
-
[解決済み] Pod内のコンテナを再起動する
-
[解決済み] KubernetesのClusterIP、NodePort、LoadBalancerのサービスタイプの違いとは?
-
[解決済み】"ImagePullBackOff "をデバッグするにはどうしたらいいですか?
-
[解決済み】gcloudとminikubeの間でkubectlのクラスタを切り替える方法
-
[解決済み] KubernetesのデプロイメントとStatefulSetsの比較