Probes merupakan prosedur pengecekan yang ada di Kubernetes. Probes di Kubernetes dibagi 3, yaitu Liveness, Readiness, dan Startup. Berikut penjelasannya :
Liveness Probe
Liveness Probe digunakan oleh Kubelet untuk mengecek kapan perlu me-restart Pod. Misal ketika liveness probe pada Pod tidak merespon kubelet maka akan secara otomatis me-restart probe.
Readiness Probe
Kubelet menggunakan Readiness Probe untuk mengecek apakah Pod siap menerima traffic.
Startup Probe
Kubelet menggunakan Startup Probe untuk mengecek apakah Pod sudah berjalan, Jika belum berjalan, maka kubelet tidak akan melakukan pengecekan liveness dan readiness. Startup probe cocok untuk Pod yang membutuhkan proses startup lama, ini dapat digunakan untuk memastikan Pod tidak mati oleh kubelet sebelum selesai berjalan dengan sempurna.
5.1.3.1-template-probe-pod.yaml
Ini sedikit penjelasan :
Ini salah satu contoh jika benar dari Liveness Probe (tidak akan perulangan) :
5.1.3.2-nginx-pod-probe.yaml
Dan ini salah satu contoh yang terdapat kesalahan dari Liveness Probe (akan ada perulangan) :
5.1.3.3-nginx-pod-falseprobe.yaml
Untuk memasukkan seperti biasa menggunakan :
Pada (namafile.yaml) diganti sesuai dengan file yang dibuat
Disini, sebagai pemahaman akan dilakukan 2 kali percobaan, Pod yang berhasil dan Pod yang gagal.
Pada Pod yang berhasil :
Disini dilhat bahwa status restart masih 0 karena tidak ada error, maksudnya karena tidak eror gimana? Nahh sekraang kita buka deskripsi dari Pod tersebut :
Disini, bisa kita lihat langsung pada bagian Liveness, yang sesuai dengan konfigurasi :
Kasus ini seperti di gambar ini :
Masih bingung ya? Tak apa, nanti kita akan bedakan dengan contoh satunya (yang gagal).
Pada Pod 5.1.3.2-nginx-pod-probe tidak akan bertambah restart atau status tersebut karena pengecekan berhasil terus dan tidak ada kendala saat Pod di jalankan.
Kenapa tak error karena kita hanya mempersiapkan di port 80 yang dimana nginx berhasil mengeluarkan keluaran (nginx disini, jika tanpa setting dia akan mengeluarkan file default bahwa nginx berjalan), dan file default tersebut ada otomatis, sehingga Probe pada Pod tidak perlu menguklangi Pod.
Saatnya kita coba yaml yang satunya yang dimana, konfigurasi Probe mendengarkan dari direktori web server 404 (sedangkan kita sendiri di web tidak menyiapkan untuk 404, bahkan nginx sama sekali masih kosong).
Langsung eksekusi :
Dan sebagai pembuktian bahwa kita tidak menyiapkan direktori 404, kita akan forward :
Cek di beda sesi SSH :
Lihat bahwa html pada 404 akan menampilkan notfound. Jika balik lagi ke SSH yang utama (perintah jalankkan Pod Error) dan kita jalan status Pod :
Status Pod error dan restart terus dilakukan. Semakin lama, jumlah mengulang akan bertambah terus. Lihat deskripsi Pod :
Disini yang perlu diperhatikan adalah bagian Event yang diman dilihat pada bagian akhir, Probe akan mengetahui bahwa keadaan tersebut tidak sesuai yang dimana 404 tidak ada dan akan mengulangi sistem Pod, yang diharap 404 bisa berjalan (walaupun sebenarnya pada contoh 404 tidak akan ada karena memang belum di buat). Seperti di gambar ini :
Kesimpulan yang ada dari di atas adalah, Probe bertugas mengecek dan akan terus memastilkan bahwa sstem Pod berjalan dengan melihat keluaran dari yang dituju.
Pada kasus real, ini digunakan ketika suatu layanan atau bagian atau bahkan seluruh error atau tidak merespon sesuai yang ada di konfigurasi Probe, dan Probe akan membantu anda mengulangi Pod, sehingga layanan kembali sesuai teget dari Probe.
Replication Controller bertugas untuk memastikan bahwa Pod selalu berjalan. Jika tiba-tiba Pod mati atau hilang, misal ketika ada Node yang mati. Maka Replication Controller secara otomatis akan menjalankan Pod yang mati atau hilang tersebut.
Replication Controller biasanya ditugaskan untuk memanage lebih dari 1 Pod Replication Controller akan memastikan jumlah Pod yang berjalan sejumlah yang telah ditentukan. Jika kurang, makan aman menambah Pod baru, jika lebih maka akan menghapus Pod yang sudah ada.
Sebagai contoh seperti skenario di bawah :
Replication Controller akan memasukkan dan memastikan Pod ada terus, pada kasus skenario di bawah Replication Controller menggunakan Node 1 untuk menyimpan Pod 1.
Pada suatu kasus ternyata Node 1 memiliki gangguan sehingga Node 1 tidak online, maka Replication Controller akan menaruh Pod 1 yang sudah di atur di Node lain yang online secara otomatis.
Untuk membuat Replication Controller gunakan tempalate yang ada di bawah ini :
5.2.2.1-template-replicationcontroller.yaml
Untuk contoh kita gunakan :
5.2.2.2-3x-nginx-replicationcontroller.yaml
Untuk menjalankan dari Replication Controller menggunakan perintah ini :
Untuk (file.yaml) disesuaikan dengan nama file yaml yang dibuat tanpa ada tanda kurung
Contoh jika yang di ambil dari
5.2.2.2-3x-nginx-replicationcontroller.yaml
Sehingga akan mengluarkan keluaran seperti ini :
Mirip-mirip seperti sebelumnya, ini untuk melihat Replication Controller :
or
or
It will outputed like this :
Dapat dilihat disini, bahwa Replication Controller sudah berjalan dan menambah Pod yang sesuai, ini buktinya :
Pada Replication Controller, tak perlu khawaitr karena Pod yang dibuat pasti akan berbeda nama pada akhir nama Pod, jadi tenang saja
Setelah ini akan mencoba apakah efek Replication Controller akan berjalan.
Oke, disini masih menggunakan Replication Controller dan Pod yang masih sama :
Terlihat jelas dan ingat-ingat dari identifier masing-masing Pod. Misal disini akan dihapus Pod nginx-rc-jnz58
:
Nah, disini sudah di hapus manual untuk pod nginx-rc-jnz58
. Tapi kita akan cek, lagi :
Lihat, Replication Controller otomatis akan membuat ulang. Tak Percaya? Lihat id yang baru dan lihat juga durasi Umur dari Pod.
Percaya kan? Itulah kerja dari Replication Controller.
Saat kita menghapus Replication Controller, maka secara otomatis Pod yang berada pada label selectornya akan ikut terhapus.Jika kita ingin menghapus Replication Controller, tanpa menghapus Pod yang berada pada labelselectornya, kita bisa tambahkan opsi --cascade=false
Cara menghapus Repilcation Controller tanpa Pod yang ada, adalah :
Untuk menghapus dengan Pod yang ada gunakan :
Disini ingin dihapus biasa untuk Replication Controller, maka menggunakan perintahnya :
Disini Replication Controller sudah terhapus, tetapi jika dilihat Pod yang sebelumnya di buat :
Pod yang dibuat oleh Replication Controller masih ada, karena metode hapus yang biasa. Demikian untuk menghapus Replication Controller.
Replica Set merupakan pengembangan dari Replication Controller. Secara kinerja, masih sama seperti Replication Controller tetapi terdapat tambahan label selector yang lebih expressive dibandingkan Replication Controller yang hanya memiliki fitur label selector secara match. Sehingga, Replication Controller sekarang tidak disarankan penggunannya.
Berikut template untuk membuat Replica Set :
5.3.1.1-template-replicaset.yaml
Perlu diperhatikan :
Untuk penjelasan lanjutnya akan dijelaskan subbab setelah ini.
Akan dicoba contoh :
5.3.1.2-3x-nginx-replicaset.yaml
Untuk menjalankan sama seperti sebelumnya :
*Untuk (file.yaml) disesuaikan dengan nama file yaml yang dibuat tanpa ada tanda kurung
Dan untuk melihat list Replica Set, gunakan :
Sebagai contoh kita akan jalankan 5.3.1.2-3x-nginx-replicaset.yaml :
Lihat, untuk penggunaan dan cara pada Replica Set sangatlah mirip dengan Replication Controller, hanya beda sedikit sahaja.
Sebelumnya, jika diperhatikan, untuk selector di Replication Set kita menggunakan matchLabels
, yang artinya selector tersebut cara kerjanya match (sama seperti di Replication Controller). Tetapi, selain menggunakan matchLabels
, operasi lain yang bisa digunakan pada selector di ReplicationSet adalah menggunakan matchExpression
.
Operasi di Match Expression :
Template seperti di bawah ini :
5.3.2.1-template-replicasetwith labelselector.yaml
Contoh seperti ini :
5.3.2.2-3x-nginx-replicasetlabelselector.yaml
Dan sekarang akan dicoba :
Nah, jika dilihat dalam label, Pod memiliki masing-masing label env yang ada, jadi sistem memastikan label berada dalam label yang sudah ditentukan.