Berkenalan Dengan Kubernetes

zuhairy
Network Evolution
Published in
4 min readJan 6, 2021

Halo teman-teman

Sebelumnya, apakah teman-teman sudah mengetahui mengenai kubernetes ? Jika belum mengetahuinya. Maka, saatnya kita berkenalan terlebih dahulu agar dapat memahaminya lebih jauh.

Perkembangan teknologi saat ini memang begitu cepat, jika dahulu mungkin teman-teman sempat belajar mengenai Virtual Machine. Maka, untuk teknologi saat ini yang sedang ramai dibicarakan oleh pegiat teknologi adalah mengenai container.

Jika sebelumnya teman-teman belum mengetahui teknologi container, mungkin teman-teman bisa membaca artikel berikut agar dapat mengetahui lebih jauh mengenai container. Karena, disini hanya akan di bahas sedikit saja.

Apa itu Kubernetes ?

Kubernetes merupakan sebuah platform open-source yang dapat digunakan untuk melakukan automation deployment, scaling, dan manajemen aplikasi berbasis container.

Jika sebelumnya teman-teman sudah memahami mengenai docker container, maka ada perbedaan antara Docker dengan Kubernetes.

Anggaplah docker merupakan sebuah cargo kapal yang dimana dapat menampung berbagai macam barang, dan kubernetes ini adalah sebuah kapal yang dapat menampung cargo dan di dalamnya terdapat seorang kapten untuk mengendalikan kapal tersebut untuk dibawa kemana saja.

Sampai sini sudah paham? Nah, sebelum jauh berknelan dengan kubernetes. Mari kita pahami terlebih dahulu sejarahnya.

Sejarah Kubernetes

Sebelumnya pada tahun 2000an, Google membuat production system internal yang memang production system tersebut based on container yang bernama Borg. Brog sendiri merupakan cluster management system yang cukup sederhana untuk schedule job dan run task.

Ketika 10 tahun kemudian, Google membuat sebuah evolusi production system yang bukan sekedar untuk schedule job dan run task. Lalu, lahirlah sebuah sistem yang bernama Omega. Omega sendiri merupakan sebuah custom management system dengan schedule algorithm yang lebih kompleks

Sekitar 14 sampai 15 tahun pelajaran internal Google, Google akhirnya mendonasikan production system mereka dan menopen-source kan ke komunitas sekitar pertengahan tahun 2014 oleh Joe Beda dapat dilihat first commit beliau di github kubernetes dan dibuat menggunakan bahasa pemrograman Golang.

First Commit Kubernetes

Jadi, kubernetes bukanlah hasil dari Borg dan Omega. Melainkan kubernetes belajar dari pengalaman Borg dan Omega dan di deploy ulang

Sampai sini paham ya mengenai sejarah dari kubernetes ? Lalu, teman-teman bisa berkenalan lebih jauh mengenai arsitektur kubernetes

Arsitektur Kubernetes

Ketika teman-teman menjalankan kubernetes, sebenarnya teman-teman sedang menjalankan kubernetes cluster. Pada kubernetes cluster terdapat 2 buah komponen yang dimana kedua komponen tersebut berjalan di kubernetes cluster tersebut, yaitu :

Kubernetes Control Plane / Kubernetes Master

Kubernetes control plane atau kubernetes master ini berfungsi untuk mengontrol kubernetes cluster, serta berperan dalam proses deteksi serta pemberian respons terhadap events yang berlangsung di dalam cluster.

Pada kubernetes master / control plane terdapat beberapa komponen lainnya seperti :

  1. Kube API Server
    Kube API Server berfungsi sebagai API yang digunakan untuk berinteraksi dengan kubernetes cluster
  2. Etcd
    Etcd berfungsi sebagai database untuk menyimpan data kubernetes cluster
  3. Kube Scheduler
    Kube Scheduler bertugas mengamati pod yang baru dibuat dan belum di assign ke suatu node dan kemudian akan memilih sebuah node, dimana pod baru tersebut akan dijalankan
  4. Kube Controller Manager
    Kube Controller Manager bertugas melakukan kontrol terhadap kubernetes cluster
  5. Cloud Controller Manager
    Cloud Controller Manager bertugas melakukan kontrol terhadap interaksi dengan cloud provider

Kubernetes Nodes / Worker

Kubernetes nodes memiliki fungsi untuk melakukan pemeliharaan terhadap pod serta menyediakan environment runtime bagi kubernetes

Pada kubernetes nodes terdapat beberapa komponen seperti :

  1. Kubelet
    Kubelet berjalan di setiap nodes dan bertugas untuk memastikan bahwa aplikasi berjalan di nodes
  2. Kube Proxy
    Kube proxy berjalan di setiap nodes dan bertugas sebagai proxy terhadap arus network yang masuk ke aplikasi dan sebagai load balancer juga
  3. Container Runtime
    Untuk menjalankan container di pod harus menggunakan container runtime yang merupakan perangkat lunak yang bertanggung jawab dalam menjalankan container. Kubernetes mendukung beberapa container runtime seperti : Docker, CRI-O, Containerd, Rktlet, dan Frakti

Jika teman-teman melihat gambar berikut, maka ini bisa menjadi analogi kubernetes.

Analogi Kubernetes

Bagaimana? Sudah mulai kenal dengan kubernetes ? Atau masih bingung dengan alur kerjanya ? Begini penjelasannya.

Alur kerja kubernetes

Jika teman-teman menjadi seorang developer, teman-teman hanya perlu membuat sebuah file konfigurasi yang di dalamnya terdapat sebuah perintah untuk dapat melakukan apa saja yang dapat dijalankan di kubernetes cluster

Dengan membuat file konfigurasi misalnya app.yaml, teman-teman dapat melakukan upload file tersebut kedalam kubernetes master yang nantinya kubernetes master dapat membuat file tersebut dijalankan kedalam nodes worker.

Teman-teman tidak perlu bingung jika sudah mengupload file konfigurasi dan harus memilih pod mana yang kosong, karena sudah ada komponen kube scheduler yang bertugas untuk mengamati pod yang baru dibuat dan belum di assign ke suatu node dan kemudian akan memilih sebuah node, dimana pod baru tersebut akan dijalankan.

Sebagai contoh untuk script app.yaml :

Mungkin itu saja yang bisa dijelaskan, semoga bermanfaat.

Referensi :

https://www.youtube.com/channel/UC14ZKB9XsDZbnHVmr4AmUpQ
https://github.com/kubernetes/kubernetes/commits?after=39483aa0957be65b04686173d2970b508b3974ca+419&author=jbeda
https://kubernetes.io/id/docs/concepts/workloads/controllers/deployment/
https://kubernetes.io/id/docs/concepts/overview/components/
https://kubernetes.io/id/docs/concepts/architecture/cloud-controller/
https://kubernetes.io/id/docs/concepts/overview/what-is-kubernetes/
https://devopsanswers.com/kubernetes-tutorial-the-easy-way-part1/
Buku : Kubernetes In Action (Marko Luksa)

--

--