Pengenalan Kubernetes (1)

Nano Yulian
4 min readNov 11, 2019

--

Bismillah, kali ini saya mencoba untuk belajar dan menuliskan terkait apa itu kubernetes?, mengapa kubernetes?, dan apa saja komponen serta arsitektur pada kubernetes?. Beberapa prasyarat yang mungkin akan sangat membantu sebelum mengenal kubernetes diantaranya : dasar virtualisasi, container (saya biasa memakai docker), devops, dan jaringan.

Apa itu Kubernetes/ k8s ?

Berdasarkan website resminya kubernetes adalah platform open-source untuk automatisasi proses deployment, scaling, dan manajemen beban kerja aplikasi/layanan yang berada di dalam sebuah container. Kata kubernetes berasal dari Yunani yang artinya pilot atau juru kemudi, jadi bisa kita pikirkan bahwa kubernetes adalah seorang pilot yang bertugas mengatur dan mengendarai sebuah kapal yang berisi banyak container. Istilah kubernetes sering ditulis lebih singkat menjadi “k8s” dimana angka 8 merupakan jumlah karakter diantara k dan s. Jadi jangan bingung jika di artikel lain terdapat kata k8s yang tidak lain adalah singkatan dari kubernetes.

Kubernetes dimulai oleh Google dan sangat diinspirasi oleh Google borg, sebuah sistem milik google yang digunakan untuk mengorkestrasi container-container dan sudah beroperasi selama lebih dari 1 dekade. kubernetes pertama kali dirilis di bulan juli tahun 2015 dan secara rutin dilakukan rilis versi terbaru setiap 3 bulan sekali. Saat ini versi terakhir dari kubernetes adalah v1.16 (https://kubernetes.io/docs/setup/release/notes/) .

Mengapa K8s ?

Banyak keuntungan yang ditawarkan k8s terutama dalam manajemen environment yang berpusat pada kontainer. Kubernetes melakukan orkestrasi terhadap computing, jaringan, dan inftrastruktur penyimpanan. Berikut adalah fitur-fitur yang ditawarkan oleh kubernetes :

Automatic bin packing
Kubernetes secara otomatis melakukan penjadwalan dan pengaturan terhadap container berdasarkan konstrain dan sumber daya yang ada untuk memaksimalkan penggunaan tanpa mengorbankan availability.

Self-healing
Kubernetes secara otomotis mampu menggantikan dan melakukan restart ulang container yang hang/gagal di dalam suatu node. secara teknis kubernetes akan melakukan “kill” dan me-”run” kembali container yang dianggap tidak sehat atau container yang tidak respons (lengkap dengan aturan yang diterapkan pada container tersebut sebelumnya). k8s juga secara otomatis menjaga traffic atau akses ke container yang dianggap tidak sehat tersebut sehingga klien/pengguna menganggap tidak terjadi apa-apa pada objek layanan yang sedang diakses.

Horizontal scaling
Aplikasi atau layanan bisa direplikasi/diperbanyak (scaling) baik secara manual maupun secara otomatis berdasarkan kondisi CPU pada node.

Service discovery and Load balancing
Setiap container akan menerima IP address tersendiri dari kubernetes. Bersamaan dengan itu kubernetes juga memberikan Domain Name System (DNS) tunggal pada kumpulan container (biasa dikenal dengan istilah pod) yang bertujuan untuk mempermudah komunikasi antar container di dalam sebuah pod maupun komunikasi antar pod untuk mempermudah dalam melakukan load balancing aplikasi/layanan.

Automated rollouts and rollbacks : Kubernetes mampu untuk meluncurkan dan mengembalikan pembarauan aplikasi dan perubahan konfigurasi. Memantau kondisi aplikasi/layanan pada container untuk mencegah downtime.

Secret and configuration management : Kubernetes mengatur dan menjaga kerahasiaan konfigurasi detail dari suatu aplikasi secara terpisah dari image container demi tujuan keamanan dan kemudahan rebuild image.

Storage orchestration
Kubernetes secara otomatis melakukan manajemen terhadap storage yang dibutuhkan oleh aplikasi/layanan baik dari local storage, provider cloud eksternal, atau network storage systems.

Batch execution
Kubernetes mendukung eksekusi batch, pekerjaan jangka panjang, dan menggantikan kontainer yang gagal.

Selain fitur diatas, kubernetes menjanjikan portabilitas dan kemampuan untuk pengembangan. Dapat di guankan di berbagai macam lingkungan seperti local machine, remote VM, bare metal, atau public/private/hybrid/multi-cloud. kubernetes juga disupport oleh banyak tools opensource yang dapat meningkatkan kemampuan dari kubernetes dan memperkaya fitur yang bisa dimanfaatkan oleh penggunanya. Arsitekturnya sangat modular, pluggable, dan dapat dikustomisasi (kustom sumberdaya, operator, API, aturan scheduling, plugins). Komunitas luas dan terdapat Special Interest Groups (SIGs), yang fokus terhadap topik-topik spesial seperti baremetal, networking, container, dll. Beberapa studi kasus yang sudah menggunakan kubernetes diantaranya IBM, Pearson, eBay, Nokia, Huawei, Box, BlaBlaCar, Wikimedia, dan banyak lagi.

Jadi jika anda adalah seorang system administrator atau berada di posisi devops engineer, kubernetes bisa menjadi salah satu pilihan platform untuk bisa digunakan dalam tahapan deployment aplikasi/layanan yang akan diberikan kepada pengguna. Tentu saja ini juga harus didukung oleh tim developer yang minimal mengetahui dasar-dasar penggunaan container seperti bagaimana membungkus satu atau beberapa layanan/aplikasi dalam kumpulan container yang nanti akan dimasukkan dalam arsitektur kubernetes.

Komponen dan Arsitektur Kubernetes

Secara garis besar komponen pada kubernetes terdiri dari :

  1. satu atau lebih master nodes
  2. satu atau lebih worker nodes
  3. Distributed key-value stored, seperti etcd.

Node adalah objek apapun (tergantung konteksnya) yang terhubung dalam suatu jaringan. Pada Kubernetes node adalah sebuah mesin (biasa disebut sebagai master atau worker machine). Node bisa saja sebuah mesin virtual atau mesin fisik (misal server/workstation/PC) tergantung pada keadaan arsitektur cluster-nya. Didalam setiap node terdapat layanan-layanan (services) yang dibutuhkan untuk menjalankan pod (sebuah unit terkecil dalam kubernetes yang merupakan kumpulan satu atau lebih container dan bertugas dalam melakukan penjadwalan terhadap kumpulan container tersebut).

(Gambar diambil dari edx.org course : LinuxFoundationX: LFS158xIntroduction to Kubernetes )

Oke sementara.. sampai sini dulu.. terkait detail arsitekturnya akan dilanjutkan di artikel berikutnya “Pengenalan Kubernetes (2)”. Trims.

(Mohon Maaf jika ada kesalahan dalam definisi, sumber, dan penulisan, Mohon koreksinya.)

--

--