Tidak jarang aplikasi yang cukup kompleks, yang berkomunikasi melalui layanan mikro, membutuhkan banyak kontainer Linux untuk berkomunikasi satu sama lain. Sehingga menjalankan aplikasi dalam container menjadi sangat populer pada saat ini.
Karena kemampuan mengulang dan merilis aplikasi dengan menyediakan dependensinya melalui kode adalah keunggulan besar untuk organisasi yang beroperasi dalam skala besar.
Menggunakan Kubernetes (sistem orkestrasi kontainer) adalah cara untuk mengelola lifecycle aplikasi dalam kontainer di seluruh cluster yang memberikan kemampuan untuk mengotomatiskan penyebaran dan penskalaan beberapa kontainer sekaligus.
Cara kerja Kubernetes
Kluster Kubernetes adalah sekumpulan mesin node untuk menjalankan aplikasi dalam container. Menjalankan Kubernetes adalah menjalankan sebuah cluster.
Cluster Kubernetes memvisualisasikan tiga bagian:
- User interface
- Control plane
- Node (Mesin Komputasi)
Control Plane bertanggung jawab untuk mempertahankan keadaan cluster yang diinginkan, mengelola workers node dan pod. control plane terdiri dari:
- api-server
- cloud controller manager
- controller manager
- kube scheduler
- etcd
- Manajemen node
- Manajemen pekerjaan
- Manajemen endpoint
- Pengontrol token layanan dan akun
- Pengontrol komponen sejenis lainnya.
- Perbarui objek Node dengan pengidentifikasi setiap server terkait yang diperoleh dari API cloud provider.
- Memberi anotasi dan memberi label pada objek Node dengan informasi khusus cloud, seperti wilayah di mana node ditempatkan dan sumber daya (CPU, memori, dll) yang tersedia.
- Berisi nama host dan alamat jaringan node.
- Memverifikasi kesehatan node. Jika node menjadi tidak responsif, pengontrol ini akan memeriksa API penyedia cloud untuk mengetahui apakah server telah dinonaktifkan/dihapus/dihentikan.
- Pengontrol yang akan menghapus objek Node dari cluster Kubernetes, jika node telah dihapus dari cloud.
- Pengelola load balancer
- Alamat IP
- Pemfilteran paket jaringan
- Target health checking.
Docker
Docker dapat digunakan sebagai runtime container yang diatur oleh Kubernetes. Saat Kubernetes menjadwalkan pod ke sebuah node.
Kubelet pada node tersebut akan menginstruksikan Docker untuk meluncurkan container yang ditentukan. Kubelet kemudian secara terus-menerus mengumpulkan status kontainer tersebut dari Docker dan mengumpulkan informasi tersebut di bidang kontrol.
Docker menarik kontainer ke node untuk memulai dan menghentikan kontainer. Perbedaan saat menggunakan Kubernetes dengan Docker adalah sistem otomatis meminta Docker untuk melakukan hal-hal tersebut menggantikan admin melakukannya secara manual di semua node untuk semua container.
Referensi: