Di dalam kluster Kubernetes, workload adalah instans aplikasi atau layanan yang berjalan di kluster tersebut. Deploy, scale, perbarui, dan pulihkan workload untuk menjaga stabilitas pod dan kelangsungan layanan. Topik ini menjelaskan jenis-jenis workload umum, termasuk Deployment, StatefulSet, DaemonSet, Job, dan CronJob.
Pod
Pod merupakan unit deployable terkecil dalam Kubernetes yang membungkus satu atau beberapa kontainer beserta penyimpanan bersama (volume), jaringan, dan konfigurasi. Anda jarang membuat pod secara langsung; gunakan pengontrol seperti Deployment dan StatefulSet untuk mengelolanya.
Deployment dan StatefulSet
Deployment
Kubernetes awalnya menggunakan ReplicaSet untuk menentukan jumlah replika, pemilih label, dan templat pod. Saat ini, Deployment mengelola ReplicaSet—yang mengelola pod—dan menambahkan kontrol yang lebih canggih.
Gunakan Deployment untuk aplikasi yang tidak memerlukan persistensi data atau operasi berurutan, seperti server web dan layanan mikro.
|
Skenario |
Deskripsi |
|
Layanan web tanpa status |
Layanan web frontend melakukan scaling secara dinamis sesuai fluktuasi traffic. Deployment mendukung skalabilitas horizontal, pembaruan, dan rollback. |
|
Layanan arsitektur layanan mikro |
Dalam sistem layanan mikro, deploy dan kelola setiap layanan secara independen dengan Deployment. |
StatefulSet
Pod dalam Deployment bersifat independen dan tanpa status, tetapi beberapa aplikasi memerlukan status dan ketergantungan. Misalnya, pada database primary-replica, pod menyimpan status dan saling bergantung satu sama lain. Gunakan StatefulSet untuk pod-pod stateful yang saling terhubung ini.
Gunakan StatefulSet untuk aplikasi yang memerlukan penyimpanan persisten dan deployment instans secara berurutan, seperti database dan sistem penyimpanan terdistribusi.
|
Skenario |
Deskripsi |
|
Database stateful |
Database stateful memerlukan penyimpanan persisten dan identitas jaringan yang stabil setelah pod dijadwalkan ulang. Sebagai contoh, setiap instans MySQL menyimpan data dan konfigurasi meskipun direstart. |
|
Layanan antrian pesan terdistribusi |
Sistem messaging terdistribusi bergantung pada status berurutan dan log persisten di setiap node. Sebagai contoh, Apache Kafka mengharuskan setiap broker mempertahankan konsistensi data dan menyimpan log pada volume persisten untuk mencegah kehilangan data. |
Perbedaan antara Deployment dan StatefulSet
Pilih jenis workload berdasarkan perbedaan antara Deployment dan StatefulSet.
|
Item |
Deployment |
StatefulSet |
|
Kasus penggunaan |
Aplikasi tanpa status seperti server web dan layanan API yang memerlukan scaling cepat serta pembaruan rolling. |
Aplikasi stateful seperti database dan sistem file terdistribusi yang memerlukan penyimpanan persisten yang stabil dan deployment berurutan. |
|
Penyimpanan persisten |
Semua pod replika berbagi satu persistent volume claim (PVC). Saat dijadwalkan ulang atau diperbarui, pod akan menyambung kembali ke PVC dan data yang sama. |
Setiap pod memiliki persistent volume claim-nya sendiri untuk memastikan persistensi dan konsistensi data. Penyimpanan tetap ada meskipun pod direstart atau dijadwalkan ulang. |
|
Identifikasi jaringan |
Pod tidak memiliki identifikasi yang stabil. Nama dan alamat IP berubah setiap kali pod dibuat ulang. |
Setiap pod memiliki identifikasi yang stabil dalam format |
|
Strategi pembaruan |
|
|
|
Penemuan layanan |
Layanan (Service) menyediakan penemuan layanan dan melakukan load balancing terhadap lalu lintas masuk ke pod. Lihat Manajemen layanan. |
Setiap pod memiliki nama DNS unik dan stabil. Layanan headless yang dikelola oleh StatefulSet memungkinkan penemuan yang stabil dan akses langsung ke pod. |
DaemonSet
DaemonSet menjalankan satu replika pod di setiap node kluster untuk layanan latar belakang seperti pengumpulan log, pemantauan, dan plug-in jaringan. Ketika node bergabung atau meninggalkan kluster, DaemonSet membuat atau menghapus pod yang sesuai.
Gunakan DaemonSet untuk menjalankan proses daemon yang sama di setiap node kluster.
|
Skenario |
Deskripsi |
|
Pengumpulan log |
DaemonSet cocok untuk alat pengumpulan log seperti add-on pengumpulan log di kluster ACK yang berjalan di setiap node untuk mengumpulkan file log dan meneruskannya ke sistem manajemen log terpusat. |
|
Agen pemantauan |
Deploy agen pemantauan seperti Prometheus Node Exporter atau Datadog Agent di setiap node untuk mengumpulkan metrik resource dan memantau status node secara real time. |
Job dan CronJob
Job dan CronJob menjalankan tugas satu kali dan tugas terjadwal untuk workload yang tidak berjalan secara terus-menerus, seperti pemrosesan batch dan pekerjaan data.
-
Job menjalankan tugas hingga selesai dan menghentikan pod-nya setelah selesai. Gunakan Job untuk tugas satu kali seperti pemrosesan data dan backup.
-
CronJob menjadwalkan Job menggunakan ekspresi cron dengan bidang menit, jam, hari, bulan, dan hari dalam minggu untuk tugas periodik seperti backup database dan pembersihan log.
Kelola objek workload
Kelola workload di ACK melalui Konsol, kubectl, atau API Kubernetes untuk deploy, memantau, dan melakukan scaling layanan aplikasi.
Konsol
Gunakan Konsol ACK untuk membuat, mengelola, dan memantau workload secara visual. Topik-topik berikut mencakup manajemen Konsol untuk setiap jenis workload.
CLI
Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster guna deploy aplikasi, mengelola resource, dan memantau kluster.
API Kubernetes
Gunakan API Kubernetes untuk membuat, memperbarui, menghapus, dan memantau workload.
FAQ
Lihat FAQ Workload untuk mengatasi masalah workload.
Referensi
-
Lihat Auto scaling untuk melakukan scaling pod secara otomatis.
-
Lihat Penjadwalan untuk metode penjadwalan pod.
-
Lihat Manajemen layanan untuk penemuan layanan dan load balancing.
-
Lihat Manajemen Ingress untuk mengarahkan traffic eksternal ke layanan dalam kluster.
-
Lihat Dasar-dasar penyimpanan untuk mempertahankan data pod.
-
Lihat Pull image dari instans dalam akun yang sama untuk menarik gambar kontainer tanpa rahasia di kluster ACK.
-
Lihat Mempercepat pull gambar kontainer cross-region dengan Global Accelerator (GA) untuk mempercepat pull image dari luar negeri di kluster ACK.