All Products
Search
Document Center

Container Service for Kubernetes:Menyebarkan beban kerja

Last Updated:Jul 02, 2025

Beban kerja Kubernetes adalah kumpulan pod dan kontainer yang menjalankan aplikasi atau layanan dalam kluster Kubernetes. Untuk memastikan stabilitas pod dan kelangsungan layanan, Anda dapat melakukan operasi seperti menyebarkan, menskalakan, memperbarui, dan memulihkan beban kerja. Topik ini memperkenalkan berbagai jenis beban kerja Kubernetes, termasuk Deployment, StatefulSet, Job, dan CronJob.

Pods

Pod adalah unit terkecil yang dapat disebarkan yang dapat Anda buat atau kelola untuk aplikasi di Kubernetes. Pod mengenkapsulasi satu atau lebih kontainer, sumber daya penyimpanan, alamat IP unik, dan konfigurasi yang menentukan cara kontainer berjalan. Dalam kebanyakan kasus, pengguna Kubernetes tidak langsung membuat pod. Sebagai gantinya, Kubernetes memungkinkan Anda mengelola pod dengan menggunakan pengontrol, seperti Deployments dan StatefulSets.

Deployments dan StatefulSets

Deployment

Sebelumnya, Kubernetes menggunakan pengontrol ReplicaSet untuk menentukan jumlah pod yang direplikasi, pemilih label, dan template pod. Saat ini, Kubernetes menggunakan pengontrol Deployment untuk mengelola pengontrol ReplicaSet, sehingga memungkinkan pengelolaan dan kontrol pod secara tidak langsung.

Deployments cocok untuk skenario yang tidak sensitif terhadap persistensi data dan urutan permintaan, seperti server web dan aplikasi dengan arsitektur layanan mikro.

Skenario

Deskripsi

Layanan web tanpa status

Layanan web frontend yang perlu menangani permintaan yang berfluktuasi. Deployments mendukung penskalaan horizontal, pembaruan, dan rollback pod.

Aplikasi yang menggunakan arsitektur layanan mikro

Sistem yang terdiri dari beberapa layanan mikro menyebarkan setiap layanan secara terpisah. Setiap layanan memiliki siklus hidup independen dan persyaratan penskalaan independen. Anda dapat menggunakan Deployments untuk menyebarkan setiap layanan mikro secara terpisah.

StatefulSet

Pod yang dikelola oleh Deployment bersifat tanpa status (stateless) dan independen satu sama lain. Deployments tidak dapat memenuhi persyaratan dalam skenario tertentu, misalnya, pod yang dibuat untuk database terdistribusi dalam mode aktif/standby bersifat stateful dan saling bergantung. Dalam hal ini, Anda dapat menggunakan StatefulSets untuk mengelola pod.

StatefulSets cocok untuk skenario yang memerlukan penyimpanan persisten dan penyebaran berurutan, seperti database dan sistem penyimpanan terdistribusi.

Skenario

Deskripsi

Database stateful

Sebagian besar database stateful memerlukan penyimpanan persisten dan harus mempertahankan identifikasi jaringan yang sama serta data pod setelah pod dijadwalkan ulang. Misalnya, setiap pod yang dibuat untuk database MySQL memiliki data dan konfigurasi spesifik yang harus tetap tidak berubah setelah pod di-restart.

Layanan antrian pesan terdistribusi

Layanan antrian pesan terdistribusi memerlukan konsistensi status node dan persistensi log. Misalnya, Apache Kafka memerlukan konsistensi data yang ketat di antara node broker. Selain itu, log harus dipersistensikan ke volume persisten (PV) untuk mencegah hilangnya data.

Perbedaan antara Deployments dan StatefulSets

Tabel berikut membandingkan Deployments dengan StatefulSets untuk membantu Anda memilih antara keduanya.

Item

Deployment

StatefulSet

Skema

Ditujukan untuk aplikasi tanpa status, seperti server web dan layanan API. Deployments cocok untuk skenario di mana penskalaan cepat dan pembaruan bergulir diperlukan.

Ditujukan untuk aplikasi stateful, seperti database dan sistem file terdistribusi. StatefulSets cocok untuk skenario di mana penyimpanan persisten dan penyebaran berurutan diperlukan.

Penyimpanan persisten

Semua pod yang direplikasi berbagi klaim volume persisten (PVC) yang sama. Ketika pod dijadwalkan ulang atau diperbarui, PVC asli tetap dipasang ke pod untuk memastikan konsistensi data.

Setiap pod dipasangkan dengan PVC terpisah untuk mencapai persistensi data. Pod diberi nama dalam format tetap untuk memastikan konsistensi data. Ketika pod di-restart atau dijadwalkan ulang, PVC asli tetap dipasang ke pod.

Pengenal jaringan

Pod tidak memiliki pengenal tetap. Nama dan alamat IP pod dibuat secara dinamis saat pembuatan. Pengenal, nama, dan alamat IP pod berubah setiap kali pod dibuat ulang.

Pengenal pod berada dalam format <Nama StatefulSet>-<Nomor Seri>. Contoh: web-0 dan web-1. Nama pod tidak berubah setelah pod di-restart.

Kebijakan pembaruan

  • Pembaruan bergulir:

    Selama pembaruan bergulir, pod lama diganti oleh pod baru secara bertahap untuk memastikan ketersediaan layanan selama pembaruan.

  • Rekreasi:

    Semua pod lama dihapus sebelum sistem membuat pod baru. Akibatnya, gangguan layanan terjadi selama pembaruan. Kebijakan pembaruan ini cocok untuk skenario di mana pod lama dan pod baru tidak dapat co-exist.

  • Pembaruan bergulir:

    Pod diperbarui sesuai nomor seri. Sistem mulai memperbarui pod hanya setelah pod sebelumnya diperbarui dan masuk ke status Siap.

  • Rekreasi:

    Anda perlu menghapus pod secara manual untuk memicu rekreasi. Kebijakan pembaruan ini cocok untuk skenario di mana pembaruan ketat diperlukan.

Penemuan layanan

Mengimplementasikan penemuan layanan berdasarkan berbagai jenis Layanan dan melakukan load balancing untuk pod. Untuk informasi lebih lanjut, lihat Manajemen Layanan.

Setiap pod memiliki nama domain unik dan tetap. StatefulSets dapat menggunakan headless Services untuk mengimplementasikan penemuan layanan dan memungkinkan akses langsung ke setiap pod.

DaemonSets

DaemonSet memastikan bahwa setiap node dalam kluster Anda menjalankan pod yang direplikasi. DaemonSets cocok untuk layanan latar belakang atau proses pemantauan yang harus berjalan di semua node, seperti layanan pengumpulan log, sistem pemantauan sumber daya, dan plug-in jaringan. Ketika node ditambahkan ke atau dihapus dari kluster, DaemonSet secara otomatis membuat pod di node tersebut atau menghapus pod dari node tersebut.

DaemonSets cocok untuk menjalankan daemon yang sama di setiap node dalam kluster Kubernetes.

Skenario

Deskripsi

Pengumpulan log

DaemonSets cocok untuk menyebarkan alat pengumpulan log, seperti komponen pengumpulan log. Alat pengumpulan log harus berjalan di setiap node dalam kluster sehingga file log di setiap node dapat dikumpulkan, diproses, dan dikirim ke sistem manajemen log terpusat.

Agen pemantauan

DaemonSets digunakan untuk menyebarkan agen pemantauan Prometheus seperti Node Exporter dan Datadog Agent, yang mengumpulkan metrik penggunaan sumber daya. Ini membantu Anda memantau status dan kinerja node.

Jobs dan CronJobs

Dalam Kubernetes, Jobs digunakan untuk menjalankan tugas satu kali, sedangkan CronJobs digunakan untuk menjalankan tugas terjadwal. Jobs dan CronJobs cocok untuk beban kerja yang dijalankan sesuai permintaan, seperti tugas pemrosesan batch dan pekerjaan pemrosesan data.

  • Job membuat satu atau lebih pod untuk menjalankan tugas. Ketika tugas selesai, pod yang dibuat oleh Job secara otomatis dihentikan. Jobs cocok untuk tugas satu kali seperti tugas pemrosesan data dan tugas pencadangan data.

  • CronJob membuat Jobs berdasarkan jadwal yang ditentukan oleh ekspresi cron. Ekspresi cron mendukung kombinasi menit, jam, hari, minggu, dan bulan. CronJobs cocok untuk tugas periodik seperti tugas pencadangan basis data terjadwal dan tugas penghapusan log terjadwal.

Kelola beban kerja

Anda dapat mengelola beban kerja di kluster ACK dengan memanggil operasi API, menggunakan alat baris perintah kubectl, atau menggunakan konsol ACK. Anda dapat menggunakan metode-metode ini untuk menyebarkan, memantau, dan menskalakan aplikasi Anda secara efisien.

Gunakan Konsol ACK

Anda dapat menggunakan konsol ACK untuk membuat, mengelola, dan memantau beban kerja secara efisien, nyaman, dan visual. Topik berikut menjelaskan cara mengelola berbagai jenis beban kerja di konsol ACK:

Gunakan kubectl

Anda dapat memperoleh file kubeconfig kluster dan menggunakan kubectl untuk terhubung ke kluster. Kemudian, Anda dapat mengelola kluster berdasarkan kebutuhan bisnis Anda. Misalnya, Anda dapat menyebarkan aplikasi, mengelola sumber daya, dan memantau kluster.

API

Anda dapat membuat, memperbarui, menghapus, dan memantau beban kerja dengan memanggil operasi API. Untuk informasi lebih lanjut, lihat Gunakan API Kubernetes.

FAQ

Jika Anda mengalami masalah saat menggunakan beban kerja, lihat FAQ tentang beban kerja untuk solusi.

Referensi