Kubernetes adalah salah satu teknologi paling menarik dan inovatif dalam dunia pengembangan dan pengelolaan aplikasi saat ini. Dengan Kubernetes, Anda dapat mengelola secara efisien, otomatisasi deployment, skalabilitas, dan dalam lingkungan komputasi modern.
Dalam artikel ini, kami akan membahas secara lengkap tentang apa itu Kubernetes hingga cara kerjanya. Simak artikel berikut ini.
Apa itu Kubernetes?
Kubernetes adalah sebuah platform open source yang berfungsi sebagai manajemen aplikasi yang dikontainerisasi (docker). Kubernetes terpusat dalam suatu cluster server, serta mengelola kontainer dengan otomatis atau orkestrasi Kontainer.
Awalnya Kubernetes dikembangkan oleh Google dan saat ini dikelola oleh Cloud Native Computing Foundation (CNCF) sebagai platform manajemen kontainer yang sangat populer. K8s adalah sebutan populer bagi Kubernetes, dimana huruf K merupakan huruf depan, angka 8 merupakan jumlah huruf dari “ubernete” dan s adalah huruf terakhir. Sehingga Kubernetes = (K8s).
Adanya Kubernetes berkaitan dengan munculnya Docker atau aplikasi yang dikontainerisasi, seperti yang sudah dijelaskan pada artikel (Backlink Docker) sebelumnya, bahwa docker berfungsi untuk mengemas aplikasi menjadi sebuah kontainer.
Akan tetapi, penggunaan Docker juga menimbulkan tantangan baru, bagaimana cara mengkoordinasikan dan mengelola Docker dalam jumlah besar? Bagaimana cara melakukan monitoring pada aplikasi untuk menghindari gangguan ataupun melakukan restart secara otomatis? Bagaimana cara untuk mengupgrade aplikasi secara efisien tanpa adanya gangguan pada layanan?
Solusi terbaik dari semua pertanyaan-pertanyaan tersebut adalah dengan Kubernetes.
Fungsi Kubernetes
Fungsi Kubernetes adalah sebagai mesin untuk menjalankan kontainer pada server fisik atau virtual secara terjadwal maupun menyesuaikan dengan kebutuhan.
Berikut adalah berbagai fungsi dan fitur yang dapat dijalankan oleh Kubernetes :
1. Auto Deployment
Melakukan pemasangan kontainer(docker)secara otomatis sesuai dengan file deployment.yml.
2. Service discovery & load balancing
Kubernetes dapat mengekspos kontainer keluar melalui alamat ip atau dns. Apabila terdapat traffic besar yang mengakses, Kubernetes akan otomatis melakukan penyeimbangan beban (load balancing) ke beberapa server cluster yang tersedia.
3. Storage Orchestration
Kubernetes dapat melakukan mounting pada disk yang tersedia di cloud seperti aws maupun gcp cloud.
4. Self Healing
Apabila terdapat kontainer yang gagal, Kubernetes akan otomatis me-restart dan melakukan build ulang pada container hingga kontainer docker dapat difungsikan kembali untuk menerima request.
5. Secret management
Kubernetes dapat digunakan untuk menyimpan data sensitif, seperti ssh key, konfigurasi server, dan kredensial login. Data penting dapat diperbaharui dengan mudah tanpa harus kita lakukan rebuild pada container yang ada.
6. Auto rollout & rollback
Deployment Kubernetes menggunakan file YML, kita dapat mengatur apa yang akan dilakukan deploy, da dapat di rollback menggunakan file YML sebelumnya.
Komponen Kubernetes
Berikut adalah beberapa komponen penting Kubernetes sebagai platform orkestrasi kontainer :
1. Cluster
Kluster adalah server gabungan dari beberapa VPS untuk menjalankan sebuah Kubernetes, pada cluster terdapat master node dan worker node.
2. Master node
Master node adalah server utama yang berfungsi untuk mengatur semua operasi cluster seperti, mekanisme schedule, didalamya terdapat beberapa komponen yaitu kube-controller-manager, kube-apiserver, kube-schejuler, dan ectd.
Kube-controller-manager
Melakukan konfigurasi dan monitoring yang dibuat pada node untuk memastikan sesuai dengan Deployment.
Kube-apiserver
Siatem central k8s, sebagai planning konfigurasi dari k8s, sistem dirancang untuk dapat validasi data untuk objek API, yaitu pod, services, volume, dan lainnya.
Kube-scheduler
Sebagai program eksekusi Kubernetes, melakukan deploy ke node dan menginstall ke node tertentu.
Ectd
Digunakan untuk menyimpan storage key value Kubernetes.
3. Worker Node
Worker node menjalankan proses dari master node, dengan menggunakan kubelet dan kube-proxy.
Kubelet
Sebuah komponen yang berfungsi untuk memastikan agar service berjalan didalam pod.
Kube-proxy
Mengatur rule network dan akan melakukan forward ke kontainer yang sesuai.
Container Runtime
Software yang bertanggung jawab untuk menjalankan kontainer, seperti Docker, containerd, atau CRI-O.
Docker Image
File konfigurasi dari docker yang akan dibuat menjadi container.
4. Object
Dalam sebuah cluster Kubernetes didalamnya terdapat berbagai objek, objek tersebut merepresentasikan dari sebuah kondisi yang ada untuk dilakukannya proses eksekusi.
berikut berbagai komponen dari objek :
Pod
Pod adalah objek paling kecil yang ada pada sebuah cluster, pod terletak pada node yang berfungsi mendeploy docker dan menjalankannya.
Service
Service berfungsi untuk meneruskan request ke beberapa pod menggunakan ip address, agar pod dapat diakses melalui jaringan eksternal.
Volume
Volume berfungsi sebagai tempat penyimpanan data bagi suatu kontainer yang dijalankan, volume biasanya terletak diluar kontainer.
Namespace
Sebuah ojek yang berfungsi untuk memisahkan resource atau enviroment Cluster.
Cara Kerja Kubernetes
Untuk mempermudah memahami cara kerjanya, kita bisa mengibaratkan Kubernetes sebagai sebuah orkestra musik, dimana setiap musisi memegang alat musiknya sebagai sebuah kontainer atau docker.
Sedangkan dirigen musik berperan dalam mengatur jalannya musik, mengendalikan tinggi rendahnya nada, dan menyelaraskan jalannya musik sesuai dengan not kunci (analoginya adalah file konfigurasi yang kita buat untuk memberikan perintah).
Dengan peran pentingnya, dirigen musik inilah yang mewakili peran utama Kubernetes dalam mengelola dan mengkoordinasikan aplikasi di dalam lingkungan komputasi modern.
Manfaat Kubernetes
Kubernetes memiliki banyak manfaat dalam pengelolaan kontainer. Berikut ini adalah beberapa manfaat dari Kubernetes:
1. Skalabilitas
Kubernetes dapat digunakan untuk menambah atau mengurangi jumlah replika dari aplikasi yang berjalan di dalamnya. Dengan adanya fitur otomatisasi dan manajemen sumber daya, Kubernetes dapat menangani peningkatan lalu lintas secara dinamis tanpa adanya downtime.
2. Ketersediaan Tinggi
Kubernetes dirancang untuk menjaga agar Kontainer tetap dapat berjalan diatas node yang normal. apabila t node gagal atau mengalami masalah, Kubernetes akan secara otomatis menjalankan ulang kontainer tersebut pada node yang lain dalam cluster.
3. Skalabilitas Horizontal
Pada Kubernetes, pengguna dapat meningkatkan ukuran aplikasi dengan menambahkan node ke Cluster yang ada dengan mudah.
4. Otomatisasi
Kubernetes menyediakan berbagai fitur otomatisasi, otomatisasi Deployment, otomatisasi uptime tiap container.
5. Pemantauan dan Logging
Kubernetes menyediakan tools dan mekanisme untuk memantau kesehatan aplikasi, kinerja, dan log. User dapat menggunakan alat bawaan Kubernetes seperti Kubernetes Dashboard atau mengintegrasikannya dengan monitoring pihak ketiga seperti Prometheus dan Grafana.
Kesimpulan
Kubernetes adalah sebuah platform open-source untuk mengelola dan menjalankan aplikasi berbasis container. Kubernetes menawarkan sejumlah manfaat yang signifikan, termasuk skalabilitas, ketersediaan tinggi, skalabilitas horizontal, otomatisasi, pemantauan dan logging, serta manajemen konfigurasi.
Dengan Kubernetes, pengguna dapat dengan mudah mengelola aplikasi yang terdiri dari banyak container yang berjalan di berbagai host server yang ada. Kubernetes akan memastikan ketersediaan dan skalabilitas aplikasi, dan menggunakan fitur-fitur otomatisasi untuk mengurangi waktu dan pengelolaan dalam mengelola aplikasi.
Selain itu, Kubernetes juga dapat menggunakan monitoring, manajemen konfigurasi, dan sistem Firewall yang aman. Dengan sistem Kubernetes yang luas dan dukungan yang kuat dari komunitas open-source, Kubernetes telah menjadi standar industri untuk pengelolaan aplikasi berbasis container.