Matawebsite Promo Lebaran 2022

Kubernetes, Platform Yang Banyak Digunakan Start-Up Dalam Pengembangan Aplikasi

date 21 Aug 2021
date Sulfikardi
date 611
date Web Programming
Kubernetes, Platform Yang Banyak Digunakan Start-Up Dalam Pengembangan Aplikasi

Mengenal Kubernetes

Kubernetes merupakan platform open-source yang digunakan untuk melakukan manajemen workloads aplikasi yang dikontainerisasi, serta menyediakan konfigurasi dan otomatisasi secara deklaratif. Kubernetes berada di dalam ekosistem yang besar dan berkembang cepat. Service, support, dan perkakas Kubernetes tersedia secara meluas.


Google membuka Kubernetes sebagai proyek open source pada tahun 2014. Kubernetes dibangun berdasarkan pengalaman Google selama satu setengah dekade dalam menjalankan workloads bersamaan dengan kontribusi berupa ide-ide terbaik yang diberikan oleh komunitas.


Meskipun Kubernetes menyediakan banyak fungsionalitas, selalu ada keadaan dimana hal tersebut membutuhkan fitur baru. Hal inilah yang membuat Kubernetes juga didesain sebagai platform untuk membangun ekosistem komponen dan dan perkakas untuk memudahkan proses deployment, scale, dan juga manajemen aplikasi.

Kubernetes berdiri di atas platform Linux dan dirancang sedemikian rupa untuk mempermudah pengembang dan mengelola kontainer melalui proses yang singkat dan mudah.

Mengapa Kubernetes menggunakan Kontainer?

Cara Lama untuk melakukan mekanisme deploy suatu aplikasi adalah dengan cara instalasi aplikasi tersebut pada sebuah mesin dengan menggunakan package manager yang dimiliki oleh sistem operasi mesin tersebut. Hal ini menciptakan suatu ketergantungan antara executables, konfigurasi, serta ketergantungan lain yang dibutuhkan aplikasi dengan sistem operasi yang digunakan oleh mesin. Untuk mengatasi hal ini, tentunya bisa saja kita melakukan mekanisme build suatu image VM yang immutable untuk mendapatkan mekanisme rollouts dan rollback yang dapat diprediksi. Meskipun demikian, VM masih dianggap "berat" dan tidak tidak mudah dipindahkan.

Cara Baru adalah dengan melakukan mekanisme deploy kontainer pada tingkatan virtualisasi di level sistem operasi (OS) bukan pada tingkatan virtualisasi perangkat keras. Kontainer ini berada dalam lingkungan yang terisolasi satu sama lain serta terisolasi dengan mesin dimana kontainer ini berada. Kontainer ini memiliki filesystems masing-masing. Selain itu, setiap kontainer tidak dapat "melihat" process yang sedang dijalankan di kontainer lain. Selain itu resource komputasi yang digunakan oleh kontainer ini juga dapat dibatasi. Kontainer juga dapat dengan lebih mudah di-build jika dibandingkan dengan VM, karena kontainer tidak bergantung pada filesystem yang dimiliki mesin, serta dengan mudah dapat didistribusikan.


Komponen - Komponen Kubernetes

Cluster

Cluster merupakan kelompok berisi server fisik atau cloud untuk menjalankan Kubernetes. Ada dua jenis server yang dibutuhkan, yaitu master node dan worker node. 

1. 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.

2. Worker Node 

Worker node adalah semua server non master yang berfungsi untuk menjalankan dua komponen, yaitu kubelet dan kube-proxy.

Object

Di dalam sebuah cluster, terdapat berbagai object yang merepresentasikan kondisi dari suatu cluster. Ada berbagai macam object yang ada pada  cluster Kubernetes, yaitu:

1. Pod
Pod merupakan objek terkecil di dalam cluster kubernetes yang terletak di dalam node. Fungsinya untuk menjalankan  images  yang membentuk sebuah kontainer. 


2. Node
Node merupakan representasi dalam satu mesin dan bisa saja mesin yang digunakan adalah mesin jenis virtual, misalkan VPS maupun fisik.


3. Service
Service pada kubernetes merupakan mekanisme yang digunakan mengekspos pod agar dapat di akses dari luar pod. 


4. Volume
Volume adalah objek yang berfungsi untuk penyimpanan data suatu kontainer. Letaknya di luar kontainer. Misalnya, awsElasticBlockStore, azureDisk, azureFile, cephfs, secret, configMap.


5. 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. 

Keunggulan Kubernetes

1.  Automated Rollouts and Rollbacks

Fitur automated rollouts dan rollback sangat membantu dalam proses 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.

2. Secret and Configuration Management

Di Kubernetes anda dapat 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.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). 

3. Automatic Bin Packing

Dengan 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. 

4. Service Discovery dan Load Balancing

Dengan fitur service discovery memudahkan anda 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. Tidak hanya itu, dengan 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.


 

Matawebsite Promo
sul.png

Sulfikardi

Web Design & Web Programming

Halo, saya seorang Web Developer yang terbiasa mengembangkan website menggunakan HTML, CSS, Javascript, PHP, MYSQL, dan Laravel. Disini saya akan membagikan pengalaman saya dalam membangun dan mengembangan website yang responsif dan dinamis

Artikel Populer

Halo, ada yang bisa kami bantu?
Daftar Sekarang