DaemonSet Kubernetes: Pengertian, Cara Kerja, Arsitektur, Komponen, Manfaat, Kelebihan, Kekurangan, dan Implementasinya | Dewa234
DaemonSet Kubernetes: Pengertian, Cara Kerja, Arsitektur, Komponen, Manfaat, Kelebihan, Kekurangan, dan Implementasinya
Setelah memahami StatefulSet, langkah berikutnya adalah mempelajari DaemonSet Kubernetes. Berbeda dengan Deployment maupun StatefulSet yang menjalankan sejumlah Pod sesuai kebutuhan aplikasi, DaemonSet memastikan setiap Node di dalam Cluster menjalankan satu salinan Pod yang sama.
DaemonSet umumnya digunakan untuk layanan tingkat sistem seperti monitoring, logging, keamanan, network plugin, dan storage agent. Ketika Node baru bergabung ke Cluster, Kubernetes secara otomatis membuat Pod DaemonSet pada Node tersebut. Sebaliknya, saat Node dihapus, Pod juga akan ikut dihapus.
Apa Itu DaemonSet?
DaemonSet adalah workload Kubernetes yang memastikan satu Pod berjalan pada setiap Node yang memenuhi kriteria tertentu. Resource ini sangat cocok untuk aplikasi Dewa234 yang harus tersedia di seluruh Node agar Cluster dapat beroperasi secara optimal.
Mengapa DaemonSet Penting?
- Menjalankan layanan pada seluruh Node.
- Otomatis mengikuti penambahan Node.
- Mengelola agen monitoring dan logging.
- Menyederhanakan administrasi Cluster.
- Mendukung operasional Kubernetes.
- Mengurangi konfigurasi manual.
Bagaimana Cara Kerja DaemonSet?
- Administrator membuat DaemonSet.
- Kubernetes memeriksa seluruh Node.
- Setiap Node menjalankan satu Pod DaemonSet.
- Jika Node baru ditambahkan, Pod otomatis dibuat.
- Jika Node dihapus, Pod juga ikut dihapus.
- Rolling Update dilakukan secara bertahap.
Ilustrasi Cara Kerja DaemonSet
DaemonSet
│
┌──────────┼──────────┐
▼ ▼ ▼
Node-1 Node-2 Node-3
│ │ │
Fluentd Fluentd Fluentd
Arsitektur DaemonSet
+----------------------+
| DaemonSet |
+----------+-----------+
│
┌─────────┼──────────┐
▼ ▼ ▼
Node-1 Node-2 Node-3
│ │ │
Pod Pod Pod
Komponen DaemonSet
| Komponen | Fungsi |
|---|---|
| DaemonSet | Mengelola Pod pada setiap Node. |
| Node | Menjalankan Pod DaemonSet. |
| Pod | Menjalankan layanan sistem. |
| Scheduler | Menentukan Node yang memenuhi syarat. |
| Label Selector | Memilih Node tertentu jika diperlukan. |
Karakteristik DaemonSet
- Satu Pod pada setiap Node.
- Otomatis mengikuti perubahan jumlah Node.
- Mendukung Node Selector.
- Mendukung Tolerations dan Affinity.
- Dapat diperbarui menggunakan Rolling Update.
- Tidak menggunakan Replica.
Contoh Penggunaan DaemonSet
- Fluentd.
- Filebeat.
- Prometheus Node Exporter.
- Falco.
- Calico Node.
- Cilium Agent.
- CSI Storage Driver.
Manfaat DaemonSet
- Monitoring seluruh Node.
- Pengumpulan log terpusat.
- Meningkatkan keamanan Cluster.
- Mempermudah pengelolaan agen sistem.
- Deployment otomatis pada Node baru.
Kelebihan DaemonSet
- Deployment otomatis.
- Administrasi lebih sederhana.
- Cocok untuk layanan sistem.
- Terintegrasi dengan Kubernetes.
- Skalabilitas mengikuti jumlah Node.
Kekurangan DaemonSet
- Tidak cocok untuk aplikasi pengguna.
- Dapat menghabiskan resource setiap Node.
- Perlu perencanaan resource.
- Konfigurasi Node Selector harus tepat.
Contoh YAML DaemonSet
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd
spec:
selector:
matchLabels:
app: fluentd
template:
metadata:
labels:
app: fluentd
spec:
containers:
- name: fluentd
image: fluent/fluentd
Perintah kubectl yang Sering Digunakan
kubectl get daemonset kubectl describe daemonset fluentd kubectl apply -f daemonset.yaml kubectl rollout status daemonset/fluentd kubectl delete daemonset fluentd
Best Practice Menggunakan DaemonSet
- Gunakan Resource Requests dan Limits.
- Gunakan Node Selector bila diperlukan.
- Gunakan Rolling Update.
- Pantau penggunaan CPU dan Memori.
- Gunakan image resmi yang selalu diperbarui.
- Batasi hak akses menggunakan RBAC.
- Dokumentasikan konfigurasi DaemonSet.
Troubleshooting Umum
| Masalah | Penyebab | Solusi |
|---|---|---|
| Pod tidak berjalan pada Node. | Node Selector tidak sesuai. | Periksa label Node. |
| Pod CrashLoopBackOff. | Konfigurasi aplikasi salah. | Periksa log Pod. |
| DaemonSet tidak membuat Pod baru. | Node belum memenuhi syarat. | Periksa taints dan tolerations. |
| Update gagal. | Image bermasalah. | Rollback atau gunakan image yang valid. |
Baca Juga
Artikel Selanjutnya
Deployment, StatefulSet, dan DaemonSet digunakan untuk menjalankan aplikasi atau layanan yang berjalan terus-menerus. Namun, ada kalanya sebuah proses hanya perlu dijalankan sekali hingga selesai, misalnya migrasi database atau proses backup. Untuk kebutuhan tersebut, Kubernetes menyediakan Job.
Pertanyaan yang Sering Diajukan (FAQ)
Apa itu DaemonSet?
DaemonSet adalah workload Kubernetes yang memastikan satu Pod berjalan pada setiap Node yang memenuhi kriteria tertentu di dalam Cluster.
Apa perbedaan DaemonSet dan Deployment?
Deployment menjalankan sejumlah Pod sesuai jumlah replica yang ditentukan, sedangkan DaemonSet menjalankan satu Pod pada setiap Node secara otomatis.
Kapan menggunakan DaemonSet?
DaemonSet digunakan untuk layanan sistem seperti monitoring, logging, keamanan, plugin jaringan, dan driver penyimpanan yang harus tersedia pada setiap Node.
Apakah DaemonSet dapat berjalan pada Node tertentu saja?
Ya. Dengan menggunakan Node Selector, Node Affinity, atau Tolerations, DaemonSet dapat dikonfigurasi agar hanya berjalan pada Node tertentu sesuai kebutuhan.
Kesimpulan
DaemonSet merupakan workload Kubernetes yang dirancang untuk menjalankan satu Pod pada setiap Node di dalam Cluster. Resource ini sangat penting untuk layanan sistem seperti monitoring, logging, keamanan, dan plugin jaringan. Dengan memahami DaemonSet, Anda dapat mengelola komponen infrastruktur Kubernetes secara lebih efisien. Langkah berikutnya adalah mempelajari Job untuk menjalankan tugas yang bersifat sementara hingga selesai.