Kubernetes 已完成 Job 的自動(dòng)清理

2022-05-06 09:18 更新

已完成 Job 的自動(dòng)清理

FEATURE STATE: Kubernetes v1.23 [stable]

TTL-after-finished 控制器 提供了一種 TTL 機(jī)制來限制已完成執(zhí)行的資源對象的生命周期。 TTL 控制器目前只處理 Job。

TTL-after-finished 控制器

TTL-after-finished 控制器只支持 Job。集群操作員可以通過指定 Job 的 ?.spec.ttlSecondsAfterFinished? 字段來自動(dòng)清理已結(jié)束的作業(yè)(?Complete ?或 ?Failed?)。

TTL-after-finished 控制器假設(shè)作業(yè)能在執(zhí)行完成后的 TTL 秒內(nèi)被清理,也就是當(dāng) TTL 過期后。 當(dāng) TTL 控制器清理作業(yè)時(shí),它將做級聯(lián)刪除操作,即刪除資源對象的同時(shí)也刪除其依賴對象。 注意,當(dāng)資源被刪除時(shí),由該資源的生命周期保證其終結(jié)器(Finalizers)等被執(zhí)行。

可以隨時(shí)設(shè)置 TTL 秒。以下是設(shè)置 Job 的 ?.spec.ttlSecondsAfterFinished? 字段的一些示例:

  • 在作業(yè)清單(manifest)中指定此字段,以便 Job 在完成后的某個(gè)時(shí)間被自動(dòng)清除。
  • 將此字段設(shè)置為現(xiàn)有的、已完成的作業(yè),以采用此新功能。
  • 在創(chuàng)建作業(yè)時(shí)使用 mutating admission webhook 動(dòng)態(tài)設(shè)置該字段。集群管理員可以使用它對完成的作業(yè)強(qiáng)制執(zhí)行 TTL 策略。
  • 使用 mutating admission webhook 在作業(yè)完成后動(dòng)態(tài)設(shè)置該字段,并根據(jù)作業(yè)狀態(tài)、標(biāo)簽等選擇不同的 TTL 值。

警告

更新 TTL 秒數(shù)

請注意,在創(chuàng)建 Job 或已經(jīng)執(zhí)行結(jié)束后,仍可以修改其 TTL 周期,例如 Job 的 ?.spec.ttlSecondsAfterFinished? 字段。 但是一旦 Job 變?yōu)榭杀粍h除狀態(tài)(當(dāng)其 TTL 已過期時(shí)),即使您通過 API 增加其 TTL 時(shí)長得到了成功的響應(yīng),系統(tǒng)也不保證 Job 將被保留。

時(shí)間偏差 

由于 TTL-after-finished 控制器使用存儲(chǔ)在 Kubernetes 資源中的時(shí)間戳來確定 TTL 是否已過期, 因此該功能對集群中的時(shí)間偏差很敏感,這可能導(dǎo)致 TTL-after-finished 控制器在錯(cuò)誤的時(shí)間清理資源對象。

時(shí)鐘并不總是如此正確,但差異應(yīng)該很小。 設(shè)置非零 TTL 時(shí)請注意避免這種風(fēng)險(xiǎn)。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號