是否可以backoffLimit全域配置(例如,將集群中所有作業的默認限制從 6 更改為 2,而不是backoffLimit: 2為每個作業指定)?
uj5u.com熱心網友回復:
似乎默認值(spec.backOffLimit包括在內)直接硬編碼到 Kubernetes 代碼中。
來自apis/batch/v1/defaults.go
func SetDefaults_Job(obj *batchv1.Job) {
// For a non-parallel job, you can leave both `.spec.completions` and
// `.spec.parallelism` unset. When both are unset, both are defaulted to 1.
if obj.Spec.Completions == nil && obj.Spec.Parallelism == nil {
obj.Spec.Completions = utilpointer.Int32Ptr(1)
obj.Spec.Parallelism = utilpointer.Int32Ptr(1)
}
if obj.Spec.Parallelism == nil {
obj.Spec.Parallelism = utilpointer.Int32Ptr(1)
}
if obj.Spec.BackoffLimit == nil {
obj.Spec.BackoffLimit = utilpointer.Int32Ptr(6)
}
labels := obj.Spec.Template.Labels
if labels != nil && len(obj.Labels) == 0 {
obj.Labels = labels
}
if utilfeature.DefaultFeatureGate.Enabled(features.IndexedJob) && obj.Spec.CompletionMode == nil {
mode := batchv1.NonIndexedCompletion
obj.Spec.CompletionMode = &mode
}
if utilfeature.DefaultFeatureGate.Enabled(features.SuspendJob) && obj.Spec.Suspend == nil {
obj.Spec.Suspend = utilpointer.BoolPtr(false)
}
}
所以我認為目前無法在不更改代碼的情況下更改它。
uj5u.com熱心網友回復:
不,這是不可能的,因為backoffLimit根據官方檔案在 Pod 級別配置:
在某些情況下,由于配置中的邏輯錯誤等,您希望在一定數量的重試后使 Job 失敗。為此,請設定 .spec.backoffLimit 以指定在將 Job 視為失敗之前的重試次數。退避限制默認設定為 6。與作業關聯的失敗 Pod 由作業控制器重新創建,指數退避延遲(10 秒、20 秒、40 秒……)上限為 6 分鐘。當作業的 Pod 被洗掉或成功時,該作業的任何其他 Pod 沒有在該時間附近失敗時,回退計數將被重置。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/331123.html
標籤:Kubernetes
下一篇:入口控制器無法連接到外部
