Apa yang dimaksud dengan Cluster Kubernetes (K8s)?

Bagi developer perusahaan yang membangun dan men-deploy aplikasi modern, mengelola workload dalam container dalam skala besar dapat menjadi tantangan umum. Kubernetes, yang sering disingkat sebagai K8s, telah menjadi standar untuk orkestrasi container. Inti dari sistem open source yang canggih ini adalah cluster Kubernetes, lingkungan tangguh yang dirancang untuk mengotomatiskan deployment, penskalaan, dan pengelolaan aplikasi dalam container.

cluster kubernetes
Diagram cluster Kubernetes

Definisi cluster Kubernetes

Cluster Kubernetes adalah sekumpulan node, atau mesin, yang dikelompokkan untuk menjalankan aplikasi dalam container. Cluster ini menyediakan lingkungan komputasi yang terpadu dan diabstraksi, sehingga Anda dapat men-deploy dan mengelola layanan tanpa harus berinteraksi langsung dengan server individual.

Peran utama cluster K8s adalah orkestrasi container: orkestrasi ini mengotomatiskan tugas kompleks yang terlibat dalam menjaga ketersediaan aplikasi, menskalakan resource berdasarkan permintaan, dan meluncurkan update tanpa periode nonaktif. 

Dengan mengelola seluruh siklus proses container, cluster Kubernetes menyediakan platform dasar yang diperlukan aplikasi perusahaan agar dapat diskalakan dan fleksibel.

Node

Node adalah mesin pekerja dalam cluster Kubernetes, yang dapat berupa virtual machine (VM) dari penyedia cloud atau server fisik di pusat data. Setiap node menyediakan resource CPU, memori, dan jaringan yang diperlukan untuk menjalankan container. Cluster K8s terdiri dari bidang kontrol dan satu atau beberapa worker node, yang secara kolektif menyediakan kapasitas komputasi cluster.

Pod

Dalam model objek Kubernetes, unit terkecil dan paling mendasar yang dapat di-deploy adalah pod. Pod merepresentasikan satu instance proses aktif dalam cluster dan mengenkapsulasi satu atau beberapa container yang terhubung erat, resource penyimpanan bersama, dan alamat IP jaringan yang unik. Meskipun sebuah pod dapat berisi beberapa container, pola yang paling umum adalah pod menampung satu container, sehingga membuat pemetaan 1-ke-1 antara pod dan aplikasi dalam container.

Container

Container adalah paket software ringan, mandiri, dan dapat dieksekusi yang mencakup semua hal yang diperlukan untuk menjalankan aplikasi: kode, runtime, alat sistem, library sistem, dan setelan. Enkapsulasi ini membantu memastikan bahwa aplikasi berjalan dengan cepat dan andal dari satu lingkungan komputasi ke lingkungan komputasi lainnya. Karena portabel dan efisien, container adalah elemen penyusun ideal untuk aplikasi modern berbasis microservice.

Arsitektur cluster K8s

Arsitektur cluster Kubernetes terdiri dari dua jenis komponen utama yang dapat membantu membuat sistem fault-tolerant untuk menjalankan aplikasi.

  • Bidang kontrol: Berfungsi sebagai otak untuk mengelola cluster. 
  • Worker node: Node ini bertindak sebagai tenaga dengan menyediakan lingkungan runtime.

Bidang kontrol (node master)

Bidang kontrol bertanggung jawab untuk mempertahankan status yang diinginkan dari seluruh cluster. Bidang ini membuat keputusan global tentang penjadwalan, merespons peristiwa cluster, dan mengelola siklus proses semua objek Kubernetes. Komponen utama bidang kontrol ini meliputi:

  • Penyimpanan pendukung (etcd): Penyimpanan nilai-kunci yang konsisten dan sangat tersedia yang digunakan sebagai penyimpanan pendukung Kubernetes untuk semua data cluster.
  • Server API (kube-apiserver): Berfungsi sebagai front end bidang kontrol, yang mengekspos Kubernetes API. API server mengelola dan memvalidasi permintaan REST, lalu mengupdate status objek yang relevan dalam etcd.
  • Scheduler (kube-scheduler): Scheduler memantau pod yang baru dibuat yang tidak memiliki node yang ditetapkan dan memilih node untuk dijalankan berdasarkan ketersediaan resource, kebijakan, dan spesifikasi afinitas.
  • Pengelola controller (kube-controller-manager) [opsional]: Komponen ini menjalankan berbagai proses controller yang mengatur status cluster. Misalnya, controller ada untuk menangani kegagalan node, mempertahankan jumlah pod yang benar untuk deployment, dan mengelola endpoint layanan.

Worker node (node komputasi)

Worker node adalah mesin tempat aplikasi dalam container Anda benar-benar berjalan. Setiap node dikelola oleh bidang kontrol dan berisi layanan yang diperlukan untuk menjalankan pod. Komponen inti di setiap worker node meliputi:

  • kubelet: Agen yang berjalan di setiap node dalam cluster, kubelet berkomunikasi dengan bidang kontrol dan memastikan bahwa container yang dijelaskan dalam spesifikasi pod berjalan dan berfungsi dengan baik.
  • kube-proxy [opsional]: Proxy jaringan ini berjalan di setiap node dan bertanggung jawab untuk mempertahankan aturan jaringan di node. Aturan jaringan ini memungkinkan komunikasi jaringan ke pod Anda dari sesi jaringan di dalam atau di luar cluster Anda.
  • Runtime container: Software ini mengelola eksekusi container dan mendukung berbagai runtime, dengan container sebagai opsi populer.

Menggunakan cluster di K8s

Cluster Kubernetes dapat sangat serbaguna dan mengatasi banyak tantangan yang dihadapi oleh tim pengembangan dan operasi perusahaan.

Memasukkan aplikasi yang ada ke dalam container

Pindahkan aplikasi lama ke dalam container untuk meningkatkan portabilitas, skalabilitas, dan pemanfaatan resource tanpa pemfaktoran ulang yang ekstensif.

Membangun aplikasi berbasis cloud baru

Gunakan cluster K8s sebagai fondasi arsitektur berbasis microservice, yang memungkinkan pengembangan, deployment, dan penskalaan layanan secara independen.

DevOps dan CI/CD

Otomatiskan pipeline build, pengujian, dan deployment dengan mengintegrasikannya ke cluster Kubernetes, sehingga mempercepat siklus rilis dan meningkatkan keandalan.

Skalabilitas dan ketahanan

Tangani beban traffic variabel dengan menskalakan aplikasi secara otomatis ke atas atau ke bawah dan aktifkan pemulihan mandiri dengan memulai ulang atau mengganti container yang gagal secara otomatis.

Efisiensi sumber daya

Meningkatkan pemanfaatan infrastruktur dengan mengemas container secara lebih padat ke dalam lebih sedikit node, yang dapat menghasilkan penghematan biaya yang signifikan.


Mengatasi tantangan bisnis Anda dengan Google Cloud

Pelanggan baru mendapatkan kredit gratis senilai $300 untuk dibelanjakan di Google Cloud.

Pengelolaan cluster Kubernetes

Meskipun Kubernetes sangat canggih, menyiapkan dan mengoperasikan cluster K8s yang aman dan berkelas produksi memerlukan overhead operasional yang signifikan. Di sinilah layanan terkelola seperti Google Kubernetes Engine (GKE) dapat memberikan nilai yang sangat besar bagi tim perusahaan. GKE dapat membantu menyederhanakan pengelolaan cluster Kubernetes dengan mengotomatiskan banyak tugas yang kompleks dan memakan waktu.

GKE dapat menyediakan bidang kontrol yang terkelola sepenuhnya, menangani ketersediaan, patching, dan update, sehingga tim Anda tidak perlu melakukannya. GKE menawarkan fitur seperti mode Autopilot, yang mengotomatiskan seluruh pengelolaan operasional cluster, termasuk node dan penskalaan, untuk lebih mengurangi overhead dan mengoptimalkan penggunaan resource. Dengan GKE, developer dapat berfokus pada penulisan kode dan pembuatan aplikasi, sementara platform menangani arsitektur dan infrastruktur cluster Kubernetes yang mendasarinya, sehingga memastikan keamanan, keandalan, dan skalabilitasnya.

Referensi pembelajaran cluster Kubernetes