Pengenalan Kubernetes

Kubernetes adalah aplikasi untuk automation deployment, scaling dan manajemen aplikasi berbasis container. Kubernetes adalah aplikasi Open Source dan saat ini paling populer di jenis nya. Banyak perusahaan-perusahaan besar yang sudah menggunakan Kubernetes, termasuk perusahaan Unicorn di Indonesia.

Kubernetes muncul karena adanya kebutuhan untuk mengelola puluhan atau bahkan ribuan container:
  1. Saat masuk ke tahap produksi, programmer atau developer bisa mengelola puluhan atau bahkan ribuan container.
  2. Masing-masing container perlu di deploy, di atur dan saling terhubung serta diperbaharui. Jika hal ini dilakukan secara manual, dibutuhkan waktu dan sumber daya yang tidak sedikit.

Tidak hanya untuk menjalankan container, developer juga perlu:
  1. Mengintegrasikan dan mengatur container-container yang mengandung bagian-bagian modular.
  2. Menaikkan dan menurunkan skala berdasarkan permintaan.
  3. Membangun system yang fault tolerant.
  4. Menyediakan komunikasi antar container di dalam sebuah cluster.

Sejarah Kubernetes
  1. Bertahun-tahun Google membuat internal sistem yang bernama Borg (kemudian berganti nama menjadi Omega)
  2. Sistem ini digunakan untuk membantu developer dan infra engineer untuk me- manage ribuan server yang ada di Google
  3. Tahun 2014 Google memperkenalkan Kubernetes, Open Source system yang berasal dari pengalaman Borg, Omega dan internal system lainnya

Arsitektur Kubernetes

Pengenalan Kubernetes

Kubernetes Nodes
  1. kubelet berjalan di setiap Node dan bertugas untuk memastikan bahwa aplikasi kita berjalan di Node
  2. kube-proxy berjalan di setiap Node dan bertugas sebagai proxy terhadap arus network yang masuk ke aplikasi kita dan sebagai load balancer juga
  3. container-manager berjalan di setiap Node dan bertugas sebagai container manager. Kubernetes mendukung beberapa container manager seperti Docker, containerd, cri- o, rktlet, dan yang lainnya.

Alur Kerja Menggunakan Kubernetes

Pengenalan Kubernetes
Pengenalan Kubernetes

Istilah-istilah pada Kubernetes

1. Pod
Adalah grup container instance. Kita bisa menjalankan beberapa container (misalnya aplikasi web + Database) dalam satu pod. Antar container dalam satu pod bisa saling mengakses dengan menggunakan alamat localhost. Bisa di katakan pod seperti laptop yang kita pakai coding.

2. Node
Adalah penyebutan dari mesin-mesin yang di gunakan. Mesin ini bisa saja mesin virtual (seperti VPS atau Instance) atau fisik.

3. Service
Merupakan mekanisme untuk mengekspos pod kita ke dunia luar. Aplikasi kita yang berjalan dalam pod tidak memiliki alamat IP yang tetap. Agar bisa diakses oleh aplikasi lain atau oleh user, kita perlu alamat IP yang tetap. Service menyediakan alamat IP yang tetap, yang nantinya akan kita arahkan ke pod kita dengan menggunakan selector.

4. Label
Adalah seperangkat informasi metadata untuk mencari pod tertentu.

5. App-Test
Kita buat label app yang isinya adalah nama aplikasi. Semua container, pod, dan service yang menjadi bagian dari aplikasi test kita beri label app=test.

6. Stage-production
Label stage bisa kita gunakan untuk menentukan berbagai konfigurasi environment deployment aplikasi kita, misalnya development, testing, performancetest, securitytest, dan production

7. Jenis-frontend
Kita bisa membuat label jenis aplikasi, misalnya frontend, cache, database, fileserver, dan sebagainya.

8. Selector
Adalah filtering menggunakan label. Misalnya kita ingin mencari semua instance database untuk aplikasi test yang berjalan di production.