Untuk sebagian orang istilah Kubernetes masih terdengar asing, namun untuk para programer istilah Kubernetes sudah tidak asing lagi. Para programer menggunakan dan memanfaatkan fitur-fitur dari kubernetes ini untuk membantu developer dalam pengelolaan workload aplikasi. Kubernetes adalah paltform yang dibuat oleh Google dan diperkenalkan kepada umum atau open-source pada tahun 2014. Kubernetes dapat memberikan kemudahan untuk automasi deployment, scaling, dan management containerized application atau  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. Komponen pada Kubernetes terbagi menjadi dua bagian, yaitu cluster dan object, berikut penjelasannya:

Komponen Cluster

Cluster meruapakan sebuah kelompok yang berisi server fisik atau VPS yang berfungsi untuk menjalankan Kubernetes. Kelompok atau cluster tersebut terbagi menjadi dua bagian, yaitu master node dan worker node yang memiliki fungsi yang bebeda.

Kubernetes Cluster
  1. Master Node

Master node merupaka server induk yang memiliki tugas utama mengatur seluruh pengoperasian komponen cluster dengan menggunakan etcd, kube-apiserver, kube-scheduler dan kube-controller-manager.

Berikut penjelasan istilah di atas :

  • Etcd: adalah distributed key-value yang berperan sebagai sebuah ruang penyimpanan key value konfigurasi data pada cluster.
  • Kube-API server: API Server atau sering disebut kube-apiserver melakukan pengkonfigurasian dan validasi data untuk object API, yaitu pod, services, volume, dan lainnya. kube-apiserver akan selalu memberikan status terkini dari cluster pada etcd.
  • Kube-scheduler: scheduler (atau kube-scheduler) berperan untuk menetapkan (assign) menambahkan objek baru ke node. Misalnya, menginstall pod ke node tertentu.
  • Kube-controller-manager: melakukan monitoring dan mengontrol cluster agar sesuai dengan konfigurasi data object di dalam node.
  1. Worker Node

Worker node adalah seluruh server non master yang berfungsi untuk menjalankan dua komponen, yaitu kubelet dan kube-proxy. Begini penjelasan fungsi komponennya:

  • Kubelet: komponen kecil dalam node worker yang befungsi untuk memastikan container beroperasi di dalam object pod.
  • Kube-proxy: memelihara aturan-aturan jaringan (network rules) dan meneruskan koneksi ke suatu host.
  • Container runtime: sebuah perangkat lunak yang menjalankan container dengan mendukung beberapa runtime, diantaranya Docker, containerd, cri-o, rktlet dan seluruh implementasi dari Kubernetes CRI (container Runtime interface).

Komponen Object

Pada sebuah cluster, terdiri dari beberapa object, yaitu entitas yang merepresentasikan kondisi dari suatu cluster. Ada berbagai object yang ada pada sebuah cluster Kubernetes, yaitu:

  1. Pod
Cluster Pod

Object terkecil di dalam cluster Kubernetes yang terletak di dalam node. Fungsi pod yaitu menjalankan docker images yang membentuk sebuah kontainer.

  1. Service
Cluster Service

Merupakan object yang digunakan untuk mengarahkan request atau traffic ke beberapa POD menggunakan IP address dengan tujuan agar pod bisa diakses dari luar.

  1. Volume

Objek yang berfungsi untuk menyimpan data suatu container. Terletak di luar container. Misalnya, awsElasticBlockStore, azureDisk, azureFile, cephfs, cinder, configMap.

Pada gambar di bawah ini, volume adalah /mnt/data sedangkan 192.168.0.1 adalah servicenya.

Cluster Volume
  1. Namespace

Sebuah objek untuk memisahkan resource atau environment cluster. Dengan namespace, anda dapat memisahkan setiap cluster project supaya tidak saling terganggu satu sama lain.

Cluster Namespace

Selain itu, ada beberapa abstraksi yang dimiliki oleh Kubernetes yang lebih tinggi  tang disebut dengan kontroler atau object dasar memiliki fungsi tambahan seperti

  1. ReplicaSet: berfungsi untuk memastikan seberapa banyak jumlah pod yang harus beroperasi dan menentukan penggunaan container image.
  2. Deployment: mengontrol pod dan replicaSet
  3. StatefulSet: workload API object untuk manajemen aplikasi stateful
  4. Daemonset: berfungsi untuk memastikan sebuah pod berjalan di setiap node yang berada di master.
  5. Job: Memastikan jumlah pod sesuai dengan jumlah yang diidentifikasikan

Cara kerja Kubernetes

Kubernetes merupakan 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.

Kubernetes

Untuk memudahkan memahami cara kerjanya, Anda bisa membayangkan Kubernetes sebagai container orchestration, yang bekerja bagaikan dirigen dalam sebuah pertunjukkan orkestra musik. Nah, 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.

Keunggulan Kubernetes

  1. Service discovery

Dengan menggunakan fitur Service discovery dapat memudahkan Anda dalam melacak  container secara otomatis. Kubernetes dapat mengidentifikasi container menggunakan nama DNS atau menggunakan IP address server itu sendiri.

  1. Load balancing

Load balancing mampu memembagi load yang ada, sehingga ketika terdapat lonjakan trafik yang cukup besar aplikasi dapat berjalan lebih stabil

  1. Orkestrasi ruang penyimpanan

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

  1. Bin packing otomatis

Fitur bin packing otomatis memungkinkan Anda untuk lebih menghemat sumber daya karena dapat mengatur kapasitas CPU dan RAM yang spesifik di tiap kontainer. Ketika limit kapasitas sudah ditentukan maka aplikasi tidak akan berebut resource yang ada.

  1. Self-healing

Kubernetes memiliki kemampuan untuk memeriksa kontainer, merestart kontainer yang error, atau mengganti dan memastikan kontainer yang sudah tidak bisa menanggapi request.

  1. Secret and configuration management

Anda bisa menyimpan data-data yang bersifat rahasia, seperti password, SSH keys, dan auth token ke dalam Kubernetes Secret. Selain itu, Anda dapat membangun dan mengupdate secret tanpa harus membangun ulang container image dan mengekspos secret di dalam konfigurasi. Anda juga bisa melakukan konfigurasi sesuai kebutuhan, misalnya opaque (secret umum/default), docker registry (untuk otentikasi docker registry), dan TLS (untuk penggunaan dengan public/private keys).

Eranyacloud adalah cloud service provider Indonesia yang menyediakan layanan Kubernetes. Eranyacloud memiliki 2 lokasi data center dengan level Tier 3 dan Tier 4. Kami juga telah memiliki sertifikasi ISO 9001 dan ISO 27001 untuk menjamin keamanan informasi serta kenyamanan pelanggan. Tidak perlu khawatir jika terjadi masalah karena support kami tersedia selama 24×7 dengan SLA 99.9%. Hubungi kami di sini atau melalu WhatsApp di sini jika Anda membutuhkan informasi lebih lanjut mengenai Kubernetes dari Eranyacloud.