Konsep

Edit This Page

Pengendali TTL untuk Sumber Daya yang Telah Selesai Digunakan

FEATURE STATE: Kubernetes v1.12 alpha
Fitur ini berada di dalam tingkatan Alpha, yang artinya:

  • Nama dari versi ini mengandung string alpha (misalnya, v1alpha1).
  • Bisa jadi terdapat bug. Secara default fitur ini tidak diekspos.
  • Ketersediaan untuk fitur yang ada bisa saja dihilangkan pada suatu waktu tanpa pemberitahuan sebelumnya.
  • API yang ada mungkin saja berubah tanpa memperhatikan kompatibilitas dengan versi perangkat lunak sebelumnya.
  • Hanya direkomendasikan untuk kluster yang digunakan untuk tujuan testing.

Pengendali TTL menyediakan mekanisme TTL yang membatasi umur dari suatu objek sumber daya yang telah selesai digunakan. Pengendali TTL untuk saat ini hanya menangani Jobs, dan nantinya bisa saja digunakan untuk sumber daya lain yang telah selesai digunakan misalnya saja Pod atau sumber daya khusus (custom resource) lainnya.

Peringatan Fitur Alpha: fitur ini tergolong datam fitur alpha dan dapat diaktifkan dengan feature gate TTLAfterFinished.

Pengendali TTL

Pengendali TTL untuk saat ini hanya mendukung Job. Sebuah operator kluster dapat menggunakan fitur ini untuk membersihkan Job yang telah dieksekusi (baik Complete atau Failed) secara otomatis dengan menentukan field .spec.ttlSecondsAfterFinished pada Job, seperti yang tertera di contoh. Pengendali TTL akan berasumsi bahwa sebuah sumber daya dapat dihapus apabila TTL dari sumber daya tersebut telah habis. Proses dihapusnya sumber daya ini dilakukan secara berantai, dimana sumber daya lain yang berkaitan akan ikut terhapus. Perhatikan bahwa ketika sebuah sumber daya dihapus, siklus hidup yang ada akan menjaga bahwa finalizer akan tetap dijalankan sebagaimana mestinya.

Waktu TTL dalam detik dapat diatur kapan pun. Terdapat beberapa contoh untuk mengaktifkan field .spec.ttlSecondsAfterFinished pada suatu Job:

  • Spesifikasikan field ini pada manifest sumber daya, sehingga Job akan dihapus secara otomatis beberapa saat setelah selesai dieksekusi.
  • Aktifkan field ini pada sumber daya yang sudah selesai dieksekusi untuk menerapkan fitur ini.
  • Gunakan sebuah mengubah (mutating) _admission) untuk mengaktifkan field ini secara dinamis pada saat pembuatan sumber daya. Administrator kluster dapat menggunakan hal ini untuk menjamin kebijakan (policy) TTL pada sumber daya yang telah selesai digunakan.
  • Gunakan sebuah mengubah (mutating) _admission untuk mengaktifkan field ini secara dinamis setelah sumber daya selesai digunakan dan TTL didefinisikan sesuai dengan status, label, atau hal lain yang diinginkan.

Peringatan

Mengubah TTL Detik

Perhatikan bahwa periode TTL, yaitu field .spec.ttlSecondsAfterFinished pada Job, dapat dimodifikasi baik setelah sumber daya dibuat atau setelah selesai digunakan. Meskipun begitu, setelah Job dapat dihapus (TTL sudah habis), sistem tidak akan menjamin Job tersebut akan tetap ada, meskipun nilai TTL berhasil diubah.

Time Skew

Karena pengendali TTL menggunakan cap waktu (timestamp) yang disimpan di sumber daya Kubernetes untuk menentukan apakah TTL sudah habis atau belum, fitur ini tidak sensitif terhadap time skew yang ada pada kluster dan bisa saja menghapus objek pada waktu yang salah bagi objek tersebut akibat adanya time skew.

Pada Kubernetes, NTP haruslah dilakukan pada semua node untuk mecegah adanya time skew (lihat #6159). Clock tidak akan selalu tepat, meskipun begitu perbedaan yang ada haruslah diminimalisasi. Perhatikan bahwa hal ini dapat terjadi apabila TTL diaktifkan dengan nilai selain 0.

Selanjutnya

Membersikan Job secara Otomatis

Dokumentasi Rancangan

Masukan