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.

- 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.
- 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:
- Pod

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

Merupakan object yang digunakan untuk mengarahkan request atau traffic ke beberapa POD menggunakan IP address dengan tujuan agar pod bisa diakses dari luar.
- 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.

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

Selain itu, ada beberapa abstraksi yang dimiliki oleh Kubernetes yang lebih tinggi tang disebut dengan kontroler atau object dasar memiliki fungsi tambahan seperti
- ReplicaSet: berfungsi untuk memastikan seberapa banyak jumlah pod yang harus beroperasi dan menentukan penggunaan container image.
- Deployment: mengontrol pod dan replicaSet
- StatefulSet: workload API object untuk manajemen aplikasi stateful
- Daemonset: berfungsi untuk memastikan sebuah pod berjalan di setiap node yang berada di master.
- 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.

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
- 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.
- Load balancing
Load balancing mampu memembagi load yang ada, sehingga ketika terdapat lonjakan trafik yang cukup besar aplikasi dapat berjalan lebih stabil
- Orkestrasi ruang penyimpanan
Kubernetes memungkinkan Anda melakukan mount pada storage yang diinginkan, misalnya ruang penyimpanan lokal atau yang berbasis cloud storage.
- 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.
- Self-healing
Kubernetes memiliki kemampuan untuk memeriksa kontainer, merestart kontainer yang error, atau mengganti dan memastikan kontainer yang sudah tidak bisa menanggapi request.
- 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.


