Apa itu Kubernetes? Pengenalan, Keunggulan, dan Cara Kerjanya

Apa itu Kubernetes? Pengenalan, Keunggulan, dan Cara Kerjanya

Bagi orang awam, istilah Kubernetes mungkin masih terdengar asing. Kubernetes adalah platform yang memiliki banyak manfaat bagi para developer dalam pengelolaan workload aplikasi.

Ingin tau lebih lanjut apa itu Kubernetes? Di artikel ini kamu akan mengetahui penjelasan tentang definisi Kubernetes, komponennya, manfaat, dan cara kerjanya.

Simak penjelasan berikut ya!

Apa itu Kubernetes?

Kubernetes adalah platform open-source untuk mengelola workloads aplikasi yang ada dalam kontainer, serta menyediakan konfigurasi dan otomatisasi. Pertama kali dikembangkan oleh Google, Kubernetes kini dikelola oleh Cloud Native Computing Foundation (CNCF).

Kubernetes berfungsi sebagai mesin untuk menjadwalkan dan menjalankan container pada server fisik atau virtual. Kubernetes memiliki infrastruktur kontainer-sentris, artinya semua aplikasi berjalan dalam kontainer atau docker.

Lalu, apa saja komponen-komponen dalam Kubernetes untuk bisa menjalankan fungsi tersebut?

Baca Juga: 10 Database Terpopuler di Dunia & Contoh Penggunaanya

Komponen Kubernetes

Diringkas dari situs resmi Kubernetes, berikut ini beberapa komponen dalam Kubernetes yang bertindak sebagai platform container orchestration:

1. Cluster

komponen kubernetes - cluster

Saat mendeploy Kubernetes, kamu akan mendapatkan sebuah Cluster. Cluster adalah kelompok yang terdiri dari server fisik atau Virtual Private Server (VPS) untuk menjalankan Kubernetes.

Dalam cluster Kubernetes terdapat beberapa node. Node adalah server berupa server fisik atau virtual (VPS) yang digunakan untuk menjalankan Kubernetes. Setidaknya ada 2 jenis server yang diperlukan, yaitu Master node dan Worker node. Berikut penjelasannya:

Master Node

Master node sebagai control plane bagi kluster. Node master mengatur seluruh operasi cluster, termasuk mekanisme schedule, proses deteksi, dan memberikan respon saat events yang berlangsung dalam cluster (contoh saat penjadwalan pod baru apabila jumlah replika yang ada pada replication controller tidak terpenuhi).

Operasi master menggunakan beberapa komponen, di antaranya:

  • kube-controller-manager: bertugas melakukan monitor pada cluster agar sesuai dengan konfigurasi data objek di dalam node.
  • kube-apiserver: sebagai front-end dari control plane Kubernetes. Komponen ini didesain agar dapat diskalakan secara horizontal.
  • kube-scheduler: menentukan bagaimana events dijadwalkan antara cluster berdasarkan ketersediaan resource, peraturan dari operator, dsb. Bertugas mengamati Pod baru yang belum ditempatkan di node manapun dan kemudian memilihkan Node di mana Pod baru tersebut akan dijalankan.
  • etcd: storage key value yang digunakan sebagai penyimpanan data klaster Kubernetes.

Baca Juga: Mengenal Cloud Computing: Pengertian, Jenis, dan Fungsinya

Worker Node

Worker node berfungsi menjalankan tugas yang diberikan oleh master node. Node worker menjalankan dua komponen, yakni kubelet dan kube-proxy.

  • kubelet: aplikasi kecil di dalam node worker untuk memastikan kontainer beroperasi di dalam Pod.
  • kube-proxy: memelihara aturan-aturan jaringan (network rules) serta meneruskan koneksi yang ditujukan pada suatu host.
  • Container runtime: perangkat lunak yang bertanggung jawab dalam menjalankan kontainer. Kubernetes mendukung beberapa runtime, di antaranya Docker, containerd, cri-o, rktlet dan semua implementasi Kubernetes CRI (Container Runtime Interface).

2. Object

Kubernetes memiliki entitas yang merepresentasikan state dari sistem kamu, misalnya apa aplikasi / workload yang dijalankan, jaringan / resource disk apa yang kamu sediakan, dan beberapa informasi lainnya terkait apa yang sedang dilakukan clustermu.

Object adalah entitas yang merepresentasikan kondisi suatu cluster. Ada berbagai object dasar yang ada dalam suatu cluster Kubernetes, di antaranya:

  • Pod – unit terkecil di dalam cluster yang terletak di node. Fungsi pod yaitu menjalankan docker images yang membentuk sebuah kontainer.
  • Service – digunakan untuk mengarahkan request atau trafik ke beberapa Pod menggunakan IP Address.
  • Volume – terletak di luar kontainer yang berfungsi untuk penyimpanan data suatu kontainer.
  • Namespace – object untuk memisahkan resource atau environment cluster.

Selain itu, Kubernetes memiliki beberapa abstraksi yang lebih tinggi yang disebut dengan kontroler. Kontroler merupakan object dasar dengan fungsi tambahan, contohnya:

  • ReplicaSet – memastikan jumlah pod yang harus beroperasi dan menentukan penggunaan container image.
  • Deployment – mengontrol pod dan replicaSet.
  • StatefulSet – workload API object untuk manajemen aplikasi stateful.
  • Daemonset – memastikan pod berjalan di setiap node yang terdaftar di master.
  • Job – memastikan jumlah pod sesuai dengan jumlah yang didefinisikan.

Baca Juga: Navigasi dan Cara Instal Aplikasi dari Marketplace Dewacloud

Cara Kerja Kubernetes

Kubernetes adalah sistem operasi yang mampu menjalankan aplikasi di berbagai cluster dan infrastruktur pada layanan cloud dan private data center environment.

Seperti sistem terdistribusi lainnya, Kubernetes memiliki dua komponen, yaitu Master node dan Worker node.

Control Plane (secara kasar setara dengan konsep Master node), bertindak sebagai otak dari cluster Kubernetes. Scheduling, service discovery, load balancing, dan sebagainya ada di Control Plane. Sementara itu, Worker Node bekerja menjalankan aplikasi. Kumpulan Master Node dan Worker Node membentuk sebuah cluster.

Asset Blog Dewaweb

 

Untuk memudahkan memahami cara kerjanya, kamu bisa membayangkan Kubernetes sebagai container orchestration, yang bekerja bagaikan dirigen dalam sebuah pertunjukkan orkestra musik.

Kubernetes orchestration
Gambar: Medium/AnitaIhuman

Setiap musisi yang memegang alat musik diibaratkan sebagai kontainer Docker yang bekerja dalam cluster Kubernetes. Dirigen musik memiliki partitur lagu sebagai panduan, layaknya Kubernetes yang memiliki file perintah untuk dijalankan di dalam sistem cluster Kubernetes.

Manfaat Kubernetes

Kubernetes sangat membantu dalam proses deployment aplikasi. Kenapa hal itu bisa terjadi? Mari lihat dari perkembangan proses deployment berikut ini:

perbandingan deployment tradisional, VM, kubernetes

Deployment secara tradisional hanya menggunakan server fisik, sehingga kamu tidak bisa menentukan batasan resource untuk aplikasi. Ini menyebabkan munculnya permasalahan pada alokasi sumber daya.

Sebagai solusinya, muncullah Virtual Machine (VM). Dengan ini, pemanfaatan resource dan skalabilitas menjadi lebih baik. Aplikasi dapat ditambahkan atau diperbarui dengan mudah, dan mengurangi biaya perangkat keras, dsb.

Baca Juga: Cara Deploy Aplikasi Go ke Docker

Selanjutnya ada Container. Kontainer mirip dengan VM, tetapi memiliki sifat isolasi yang lebih fleksibel untuk berbagi sistem operasi (OS) antar aplikasi. Dianggap lebih ringan dibanding VM, proses kontainerisasi memungkinkan aplikasi dapat di-deploy dengan mudah, terlepas dari berbagai macam sistem, baik di on-premise, local atau di cloud.

Keunggulan Kubernetes

Untuk memudahkan dalam pengembangan aplikasi, Kubernetes dilengkapi dengan fitur-fitur berikut:

1. Service discovery

Semakin banyak layanan yang membentuk aplikasi, maka akan semakin sulit untuk dilacak dan dikelola. Untungnya, Kubernetes memiliki fitur service discovery sehingga dapat melacak kontainer secara otomatis. Kubernetes dapat mengenali kontainer menggunakan nama DNS atau menggunakan IP address server itu sendiri.

2. Load balancing

Kubernetes memiliki fungsi load balancing, yaitu penyeimbang trafik/beban. Load balancing dapat mengelola trafik sehingga ketika terdapat lonjakan trafik yang cukup besar, maka Kubernetes mampu membagi load yang ada agar aplikasi dapat berjalan lebih stabil.

3. Orkestrasi ruang penyimpanan

Kubernetes memungkinkan kamu melakukan mount pada storage yang kamu inginkan, misalnya ruang penyimpanan lokal atau yang berbasis cloud storage.

Baca Juga: Mengenal Bahasa Pemrograman Python untuk Pemula

4. Rollout dan rollback otomatis

Fitur ini memungkinkanmu melakukan deployment menggunakan file YAML, sehingga kamu dapat mendeskripsikan terlebih dahulu deployment yang diinginkan.

File YAML tersebut dapat digunakan untuk melakukan deployment lain atau mengubah deployment yang ada. Kamu juga bisa melakukan rollback jika terjadi kendala pada deployment. Semua terdokumentasi dan bisa dilakukan secara otomatis.

5. Bin packing otomatis

Fitur bin packing otomatis memungkinkan kamu bisa mengatur kapasitas CPU dan RAM yang spesifik di tiap kontainer. Ketika limit kapasitas sudah ditentukan, maka aplikasi tidak akan berebut resource yang ada. Kamu juga jadi bisa lebih menghemat sumber daya.

6. Self-healing

Kubernetes juga bisa melakukan self-healing secara otomatis. Eits, maksudnya bukan liburan ya!

Self-healing yang dimaksud artinya Kubernetes memiliki kemampuan untuk memeriksa kontainer, merestart kontainer yang error, ataupun mengganti dan memastikan kontainer yang sudah tidak bisa menanggapi request. Kubernetes tidak akan memberikan trafik ke container sampai benar-benar siap untuk menerima request (ready to serve).

Baca Juga: Autoclustering PostgreSQL dengan Replikasi Primary-Secondary Asynchronous

7. Secret and configuration management

Kamu bisa menyimpan data-data yang bersifat rahasia, seperti password, SSH keys, dan auth token ke dalam Kubernetes Secret.

Kamu dapat membangun dan mengupdate secret tanpa harus membangun ulang container image dan mengekspos secret di dalam konfigurasi. Kamu bisa melakukan konfigurasi sesuai kebutuhan, misalnya opaque (secret umum/default), docker registry (untuk otentikasi docker registry), dan TLS (untuk penggunaan dengan public/private keys).

Kubernetes vs Docker, Mana yang Lebih Baik?

Kubernetes sering dibandingkan dengan Docker. Padahal, kedua platform tersebut berbeda dan tidak saling menggantikan.

Singkatnya, Docker merupakan platform yang berperan sebagai container manager untuk membuat kontainer aplikasi. Sedangkan, Kubernetes adalah platform keseluruhan ekosistem yang berisi kumpulan container manager. Docker bisa menjadi bagian dalam Kubernetes, tapi tidak sebaliknya.

Sebenarnya, Docker memiliki platform ekosistem sendiri yakni Docker Swarm. Jadi perbandingan yang lebih tepat adalah antara Kubernetes dengan Docker Swarm.

Baca Juga: Rekomendasi 15+ Code Editor Gratis untuk Web Developer 

Namun demikian, berikut perbandingan Kubernetes dan Docker yang telah dibuat ke dalam bentuk tabel untuk memudahkanmu memahaminya.

Perbandingan Kubernetes vs Docker

Fitur Kubernetes Docker
Definisi Software untuk mengelola kontainer di dalam cluster server Platform untuk membuat kontainer aplikasi
Skalabilitas Mendukung auto-scaling Manual scaling
Deployment Gabungan pod dan service Kumpulan service
Load balancing Manual setup Auto load balancer
Running Harus dengan platform kontainer Bisa dijalankan tanpa platform lain
Instalasi Lebih kompleks Lebih sederhana
Monitoring Built-in monitoring Menggunakan software third party untuk monitoring

Deploy Aplikasimu dengan Kubernetes Sekarang!

Bagaimana, apakah kamu sudah lebih paham apa itu Kubernetes? Jadi, Kubernetes adalah orkestrasi container atau platform untuk mengelola project aplikasi dengan sistem kontainer.

Pengembangan aplikasi jadi lebih mudah dengan Kubernetes karena dilengkapi fitur yang mendukung load balancing, skalabilitas dan deployment yang baik.

Ingin menikmati berbagai fitur dan kapabilitas yang ditawarkan Kubernetes? Tak usah bingung! Lewat Dewacloud, kamu bisa mendeploy aplikasimu dengan Kubernetes. Coba gratis Dewacloud sekarang untuk cari tau berbagai fitur Kubernetes yang bisa kamu nikmati!