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