Kubernetes: Apa itu Kubernetes? Pengertian, Fungsi dan Cara Kerjanya

From OnnoWiki
Jump to navigation Jump to search

Sumber: https://www.niagahoster.co.id/blog/kubernetes-adalah/

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.

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.

Kubernetes-cluster-1024x546 .jpg


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.

Cluster-node-1024x546.jpg

Service

Service adalah objek yang digunakan untuk mengarahkan request atau traffic ke beberapa Pod menggunakan IP address. Tujuannya agar Pod bisa diakses dari luar.

Service-kubernetes-1024x546.jpg

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.

Volume-kubernetes.png

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.

Namespace-kubernetes.png

Keunggulan Kubernetes

Kubernetes memiliki fitur-fitur yang memudahkan Anda mengembangkan aplikasi, yaitu:

  • Service Discovery dan Load Balancing -Fitur service discovery memudahkan untuk melacak kontainer dengan otomatis. Hal ini tentu sangat penting di dalam mengembangkan aplikasi microservices. Kubernetes dapat mengenali sebuah service berdasar DNS atau IP address server tersebut. Tak hanya itu, berkat Load Balancing pengelolaan trafik menjadi lebih mudah. Saat terjadi trafik yang cukup besar, Kubernetes mampu membagi beban secara merata sehingga membuat aplikasi menjadi lebih stabil.
  • Storage Orchestration - Kubernetes memungkinkan Anda melakukan mount pada media penyimpanan (storage) pilihan Anda seperti, storage lokal atau yang berbasis cloud seperti AWS dan lainnya.
  • Automated Rollouts and Rollbacks - Fitur automated rollouts dan rollback sangat penting untuk membantu Anda terkait deployment. Pada Kubernetes, deployment bisa menggunakan file YAML yang di dalamnya nanti akan berisi ReplicaSet. Apabila terjadi kendala pada deployment, dan Anda masih memiliki ReplicaSet dari versi sebelumnya, Anda dapat menggunakannya untuk melakukan rollback. Hal tersebut juga bisa Anda gunakan ketika Anda akan melakukan deployment lainnya.
  • Automatic Bin Packing - Menggunakan fitur Automatic Bin Packing, Anda bisa mengatur kapasitas CPU dan sumber daya tiap kontainer secara spesifik. Jadi saat limit kapasitas sudah ditentukan, aplikasi terhindar dari berebut sumber daya. Selain itu, sumber daya jadi lebih hemat.
  • Self Healing - Fitur self-healing sangat penting bagi Anda yang ingin terus menjalankan aplikasi selama 24 jam. Nah, Kubernetes memiliki kemampuan untuk memeriksa kontainer yang ada, apakah dalam keadaan running (berjalan) atau mengalami error. Jika terjadi kendala pada kontainer, Kubernetes akan menghentikan proses yang berjalan dan memberikan opsi untuk merestart atau mengganti secara otomatis kontainer yang error tersebut. Menariknya, trafik tidak akan diarahkan ke kontainer yang rusak sebelum siap untuk menerima request kembali.
  • Secret and Configuration Management - Kubernetes memungkinkan Anda menyimpan data-data sensitif seperti password, auth token hingga SSH keys ke dalam Kubernetes Secret. Hal ini tentu jauh lebih aman dibanding menyimpannya di dalam container image. Secret bisa dibuat oleh sistem atau oleh user, yaitu Anda sendiri. Nah, karena secret sendiri secara default disimpan tanpa terenkripsi, Anda bisa melakukan konfigurasi lebih lanjut sesuai dengan kebutuhan,antara lain opaque (secret umum/default), docker registry (untuk otentikasi docker registry), dan TLS (untuk penggunaan dengan public/private keys).

Kubernetes Vs. Docker

Kubernetes sering dibandingkan dengan Docker karena keduanya sama-sama mengelola kontainer. Padahal, dua platform tersebut berbeda dan tidak saling menggantikan.

Docker merupakan platform yang berfungsi untuk membuat kontainer untuk aplikasi dalam perannya sebagai container manager. Sedangkan, Kubernetes adalah platform dari seluruh ekosistem kerja yang berisi kumpulan container manager.

Singkatnya, Docker bisa menjadi bagian dari Kubernetes dan bukan sebaliknya. Namun, Anda dapat menggunakan keduanya bersamaan dalam sebuah ekosistem kerja.

Docker sendiri memiliki platform ekosistem yang disebut dengan Docker Swarm. Jadi, perbandingan yang tepat sebenarnya adalah antara Kubernetes dan Docker Swarm.

Perbandingan Kubernetes vs Docker
Parameter Kubernetes Docker
Definisi Aplikasi untuk mengelola kontainer dalam suatu cluster server Aplikasi untuk membuat kontainer di sebuah server
Deployment Kombinasi pod dan service Kumpulan service
Skalabilitas Otomatis menambah jumlah pod Melakukan replikasi service secara manual
Load Balancing Menggunakan service yang mengekspos Pod Menggunakan DNS untuk mendistribusikan trafik ke sebuah service
Penggunaan Harus dengan platform kontainer Bisa berjalan tanpa platform lain

Docker masih tetap menjadi favorit di antara software container lainnya karena Docker Engine yang dimilikinya bisa berjalan di berbagai ekosistem. Inilah yang membuat Docker cocok digunakan untuk membangun aplikasi yang scalable. Sayangnya, perkembangan aplikasi yang terlalu kompleks akan menjadi sulit dikelola. Itulah kenapa Kubernetes diperlukan. Penting untuk dicatat bahwa untuk dapat membangun aplikasi yang scalable, Anda tentu harus menggunakan server yang bisa diatur sesuai dengan kebutuhan resource Anda. Untuk itu layanan VPS lah yang paling tepat digunakan.

Referensi


Pranala Menarik