Anda tentu ingin project aplikasi atau website yang dikerjakan dapat berjalan dengan baik. Namun, kalau aplikasinya menjadi semakin besar, bagaimana membuatnya tetap ringkas dan cepat? Kubernetes bisa jadi solusinya.
Apa itu Kubernetes? Di artikel ini kami akan membahasnya secara lengkap mulai dari pengertian, fitur, dan cara kerjanya. Yuk langsung simak!
Apa itu Kubernetes?
Kubernetes adalah platform open source untuk mengelola kumpulan kontainer dalam suatu cluster server. Platform ini pertama kali dikembangkan oleh Google dan kini dikelola oleh Cloud Native Computing Foundation (CNCF) sebagai platform manajemen kontainer yang cukup populer.
Kontainer sendiri adalah environment dengan sumber daya, CPU, dan sistem file untuk satu aplikasi. Jadi, aplikasi tersebut akan memiliki sumber daya sendiri. Keuntungannya, aplikasi jadi tidak mudah mengalami downtime.
Kubernetes memiliki kemampuan untuk melakukan penjadwalan aplikasi, load balancing server dan peningkatan kapasitas kontainer secara otomatis.
Tak heran, Kubernetes kini banyak digunakan untuk membangun microservices, yaitu aplikasi kecil yang menjadi pengembangan dari aplikasi besar dan saling terhubung satu sama lain.
Dengan menggunakan Kubernetes, proses pengembangan aplikasi jadi lebih cepat karena proses scale up aplikasi tidak dibuat sekaligus seperti pada pendekatan monolith.
Beberapa perusahaan yang menggunakan microservices pada produk mereka di antaranya adalah Netflix, Amazon dan Apple. Inilah yang membuat Kubernetes menjadi semakin populer berkat kebutuhan penggunaan pada aplikasi modern.
Lalu, apa saja komponen di dalam Kubernetes?
Komponen Kubernetes
Berikut ini adalah komponen-komponen dalam Kubernetes:
Cluster
Cluster adalah suatu kelompok berisi server fisik atau VPS untuk menjalankan Kubernetes. Ada dua jenis server yang dibutuhkan, yaitu master node dan worker node.
- Master Node
Master node adalah server utama yang mengatur semua operasi cluster menggunakan tiga komponen, yaitu kube-apiserver, kube-controller-manager, kube-scheduler dan etcd.
Di bawah ini adalah penjelasan fungsinya:
- kube-apiserver: validasi dan konfigurasi data untuk objek API, yaitu pod, services, volume, dan lainnya.
- kube- controller-manager: melakukan monitor cluster agar sesuai dengan konfigurasi data objek di dalam node.
- kube-scheduler: menambah objek baru ke node. Misalnya, menginstall pod ke node tertentu.
- Etcd: ruang penyimpanan key value konfigurasi data cluster.
- Worker Node
Worker node adalah semua server non master yang berfungsi untuk menjalankan dua komponen, yaitu kubelet dan kube-proxy. Begini penjelasan fungsi komponennya:
- Kubelet: komponen untuk memastikan kontainer beroperasi di dalam objek Pod.
- Kube-proxy: memelihara network rules dan meneruskan koneksi ke suatu host.
- Docker image: file dari aplikasi Docker yang berfungsi untuk membuat kontainer.
Object
Di dalam sebuah cluster, terdapat berbagai object, yaitu entitas yang merepresentasikan kondisi dari suatu cluster. Ada berbagai object yang ada pada sebuah cluster Kubernetes, yaitu:
- Pod
Pod merupakan objek terkecil di dalam cluster kubernetes yang terletak di dalam node. Fungsinya untuk menjalankan docker images yang membentuk sebuah kontainer.
- Service
Service adalah objek yang digunakan untuk mengarahkan request atau traffic ke beberapa Pod menggunakan IP address. Tujuannya agar Pod bisa diakses dari luar.
- Volume
Volume adalah objek yang berfungsi untuk penyimpanan data suatu kontainer. Letaknya di luar kontainer. Misalnya, awsElasticBlockStore, azureDisk, azureFile, cephfs, cinder, configMap.
Pada gambar di bawah ini, volume adalah /mnt/data sedangkan 192.168.0.1 adalah servicenya.
- Namespace
Namespace adalah objek untuk memisahkan resource atau environment cluster. Dengan namespace, Anda dapat memisahkan tiap cluster project supaya tidak saling terganggu satu sama lain.
Cara Kerja Kubernetes
Setelah mengetahui tentang komponen-komponen Kubernetes beserta fungsinya, kami akan menjelaskan cara kerja Kubernetes yang sering disebut sebagai platform untuk container orchestration.
Nah, bayangkan Anda sedang menonton sebuah orkestra dengan banyak musisi memegang alat musik berbeda masing-masing. Setiap musisi tersebut bisa diibaratkan sebagai kontainer docker yang bekerja di dalam cluster Kubernetes.
Lalu, Anda juga akan melihat dirigen musik yang bertugas mengatur para musisi agar memainkan alat musik sesuai instruksi yang diberikan. Anda bisa membayangkan Kubernetes sebagai dirigen yang mengatur aplikasi-aplikasi Anda agar berjalan sesuai perintah.
Layaknya seorang dirigen musik, Kubernetes juga mengatur aspek dari aplikasi Anda. Mulai dari mengelola workloads dari semua kontainer seperti kapan gitar dimainkan atau drum mulai dipukul, hingga menambah skalabilitas kontainer seperti menentukan berapa pemain terompet yang membunyikan nada.
Dirigen musik menggunakan panduan yang disepakati bersama dalam bentuk partitur layaknya Kubernetes yang memiliki file perintah untuk dijalankan di dalam sistem cluster Kubernetes.
Di dalam cluster terdapat otak inti Kubernetes yang bernama control plane. Fungsinya untuk mengekspos API Server yang menangani request internal dan eksternal. Semua request untuk menjalankan cluster disimpan di dalam database etcd.
Layaknya otak dari si kondektur yang merancang sistem orkestra, control plane Kubernetes mengelola worker nodes yang berisi kumpulan node atau server. Setiap node memiliki kubelet, yaitu aplikasi yang berjalan untuk berkomunikasi dengan control plane.
Nah, node yang dikelola oleh worker node ini berisi banyak kontainer atau musisi. Anda bisa membayangkan node seperti kelompok musisi perkusi di satu sisi dan kelompok musisi terompet di bagian lain.
Di dalam kontainer itulah terdapat aplikasi-aplikasi yang Anda jalankan ibarat alat musik yang dimainkan oleh para musisi di kelompok orkestra tersebut.
Lalu, apa sih sebenarnya keunggulan Kubernetes sehingga menjadi platform yang demikian populer saat ini?
No comments:
Post a Comment