Beberapa waktu lalu aku menemukan artikel yang menjelaskan tentang Kubernetes condition. Dari situ aku belajar bahwa sumber daya yang ada di Kubernetes seperti pod, cronjob atau yang lainnya tidak mempunyai state machine untuk menjukkan apa sumber daya itu sedang menyala atau mati. Sebagai gantinya adalah Kubernetes condition. Ambil contoh pod Kubernetes yang mempunyai salah satu Kubernetes condition yang bernama ContainersReady.

Yang menarik lagi adalah antar jenis sumber daya bisa memiliki Kubernetes condition yang sama atau berbeda. Namun, status semua Kubernetes condition sepertinya hanya bisa di antara tiga nilai: True, False, Unknown. Tentunya kita bisa membuat Kubernetes condition kita sendiri dan menempelkannya pada jenis sumber daya bawaan atau buatan sendiri. Salah satu penjelas rujukan yang dipakai artikel itu adalah konvensi API Kubernetes dan ada satu pernyataan yang sebaiknya tidak dilupakan:

Condition type names should describe the current observed state of the resource, rather than describing the current state transitions.

Pernyataan ini membuatku sedikit lebih paham kenapa Kubernetes bekerja seperti itu. Pertama, kita mendefinisikan seperti apa bentuk sumber daya. Kubernetes controller kemudian melakukan rekonsiliasi melalui proses sync loop sehingga suatu kondisi tercapai. Proses sumber daya untuk mencapai sesuai yang didefinisikan bisa gagal dan ada juga Kubernetes condition yang menggambarkan kegagalan itu.