Portal/Notes πŸ“
Sre

Kubernetes (k8s)

Versi Bahasa Indonesia. Baca dalam Bahasa Inggris

Kubernetes (sering disingkat K8s) adalah platform open-source untuk mengotomatiskan deployment, scaling, dan manajemen aplikasi kontainer. Kubernetes menyediakan kerangka kerja yang kuat untuk menjalankan sistem terdistribusi secara andal dan efisien.

Fitur Utama

  • Container Orchestration: Mengelola siklus hidup kontainer, termasuk penjadwalan, scaling, dan deployment.
  • Self-Healing: Secara otomatis merestart kontainer yang gagal, mengganti dan menjadwal ulang kontainer saat node gagal, dan mematikan kontainer yang tidak merespons health check yang ditentukan pengguna.
  • Horizontal Scaling: Men-skala aplikasi secara dinamis naik atau turun berdasarkan penggunaan sumber daya atau metrik kustom lainnya.
  • Service Discovery dan Load Balancing: Mengekspos layanan ke dunia luar dan mendistribusikan lalu lintas di antara instance yang sehat.
  • Rollout dan Rollback Otomatis: Mengelola pembaruan aplikasi sambil mempertahankan kelangsungan layanan dan memungkinkan rollback jika pembaruan gagal.
  • Storage Orchestration: Mengelola solusi penyimpanan, termasuk penyimpanan lokal, penyimpanan cloud, dan network-attached storage, serta menyediakan volume secara dinamis sesuai kebutuhan.
  • Configuration Management: Mengelola konfigurasi aplikasi menggunakan ConfigMaps dan Secrets, memisahkan konfigurasi dari logika aplikasi.
  • Dukungan Multi-Cloud dan On-Premises: Berjalan di berbagai lingkungan, dari cloud publik (AWS, GCP, Azure) hingga data center on-premises.

Mengapa Kubernetes?

Sebelum Kubernetes, mengelola kontainer dalam skala besar sangat menantang. Tugas seperti deployment kontainer, scaling, dan konfigurasi jaringan memerlukan intervensi manual atau skrip kustom. Kubernetes mengotomatiskan tugas-tugas ini, memberikan manfaat seperti:

  • Pemanfaatan Sumber Daya yang Lebih Baik: Menjadwalkan beban kerja secara efisien di seluruh infrastruktur yang tersedia.
  • Ketersediaan Tinggi: Memastikan aplikasi tetap tersedia bahkan selama kegagalan.
  • Produktivitas Pengembang: Menyederhanakan deployment aplikasi, memungkinkan pengembang fokus membangun fitur daripada infrastruktur.

Komponen Inti Kubernetes

Master Node (Control Plane)

  • API Server: Antarmuka pusat untuk mengelola sumber daya Kubernetes melalui kubectl atau klien lain.
  • Scheduler: Menetapkan beban kerja (pod) ke node berdasarkan ketersediaan sumber daya dan kendala.
  • Controller Manager: Memantau status cluster dan memastikannya sesuai dengan status yang diinginkan (misalnya, mengelola replika, node, dll.).
  • etcd: Penyimpanan key-value terdistribusi yang menyimpan data konfigurasi dan status cluster.

Worker Nodes

  • Kubelet: Agen yang berjalan di setiap node untuk memastikan kontainer berjalan sesuai harapan.
  • Kube-Proxy: Mengelola aturan jaringan untuk komunikasi pod dan eksposur layanan.
  • Container Runtime: Perangkat lunak yang menjalankan dan mengelola kontainer (misalnya, Docker, containerd, CRI-O).

Pod

  • Unit terkecil yang dapat di-deploy di Kubernetes, mewakili satu atau lebih kontainer yang berjalan bersama.

Services

  • Menyediakan endpoint stabil untuk mengakses pod dan mengelola load balancing.

Ingress

  • Mengelola akses HTTP dan HTTPS eksternal ke layanan.

ConfigMaps dan Secrets

  • Menyimpan konfigurasi dan data sensitif, seperti kata sandi dan kunci API, secara terpisah dari kode aplikasi.

Persistent Volumes dan Persistent Volume Claims

  • Menangani persistensi data di luar siklus hidup pod.

Kubernetes di Dunia Nyata

  • Microservices: Kubernetes ideal untuk mengelola arsitektur microservices, memungkinkan scaling, service discovery, dan pembaruan yang efisien untuk setiap layanan.
  • Continuous Deployment: Terintegrasi dengan pipeline CI/CD untuk mengotomatiskan deployment dan rollback.
  • Deployment Hybrid dan Multi-Cloud: Memungkinkan deployment yang konsisten di berbagai penyedia cloud dan lingkungan on-premises.
  • Big Data dan Machine Learning: Digunakan untuk mengelola sumber daya komputasi untuk pemrosesan big data dan pelatihan model ML.

Edit on GitHub

Last updated on

Kubernetes (k8s) | Faisal Affan