DaemonSet memastikan bahwa satu Pod berjalan di setiap node. Saat node baru ditambahkan ke kluster, DaemonSet secara otomatis membuat Pod untuk node tersebut. Fitur ini berguna untuk skenario seperti komponen pengumpulan log (misalnya Fluentd) dan agen pemantauan node (misalnya Prometheus Node Exporter). Topik ini menjelaskan fitur-fitur DaemonSet serta cara membuatnya melalui Konsol atau kubectl.
Apa itu DaemonSet?
Secara default, DaemonSet menjalankan satu Pod di setiap node. Namun, perilaku ini dipengaruhi oleh kebijakan penjadwalan berikut. Untuk informasi selengkapnya tentang kebijakan penjadwalan, lihat Penjadwalan.
-
Taint dan Toleransi: Pod DaemonSet tunduk pada pembatasan taint dan tidak berjalan di node yang tidak dapat ditoleransi. Namun, secara default mereka mentoleransi taint berikut:
-
node.kubernetes.io/unschedulable:NoSchedule -
node.kubernetes.io/not-ready:NoExecute(ditoleransi selama 300 detik) -
node.kubernetes.io/unreachable:NoExecute(ditoleransi selama 300 detik)
-
-
nodeSelector: Pod DaemonSet juga tunduk pada pembatasan
nodeSelector. Misalnya, jika DaemonSet dikonfigurasi dengannodeSelector: { disktype: ssd }, maka ia hanya berjalan di node yang memiliki labeldisktype=ssd. -
Konfigurasi afinitas: Konfigurasi afinitas dan anti-afinitas node serta Pod juga berlaku untuk DaemonSet.
Meskipun DaemonSet dapat menerapkan beberapa kebijakan penjadwalan, hal ini bukan tujuan utama desainnya. Untuk penjadwalan yang lebih kompleks, pertimbangkan penggunaan Deployment. Untuk informasi selengkapnya tentang DaemonSet, lihat dokumentasi resmi.
Buat DaemonSet
Anda dapat membuat DaemonSet menggunakan Konsol atau kubectl.
Buat melalui Konsol
Masuk ke Container Service Management Console . Di panel navigasi sebelah kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik .
-
Pada halaman DaemonSets, klik Create from Image.
-
Karena karakteristik DaemonSet, item konfigurasi di Konsol berbeda dari Deployment dalam hal berikut:
-
Basic Information: Jumlah Pod untuk DaemonSet ditentukan oleh jumlah node. Oleh karena itu, tidak terdapat konfigurasi Replicas:.
-
Advanced: Dengan alasan yang sama, DaemonSet juga tidak memiliki opsi Scaling.
Item konfigurasi lainnya sama seperti pada Deployment. Untuk informasi selengkapnya tentang item konfigurasi tersebut, lihat Buat Deployment dan gunakan panduan tersebut untuk membuat DaemonSet.
-
Buat DaemonSet menggunakan kubectl
Sebelum membuat workload, pastikan Anda telah terhubung ke kluster menggunakan kubectl. Untuk informasi selengkapnya, lihat Hubungkan ke kluster menggunakan kubectl.
-
Salin konten YAML berikut dan simpan ke file bernama daemonset.yaml.
apiVersion: apps/v1 kind: DaemonSet metadata: name: nginx-test namespace: default # Ubah namespace sesuai kebutuhan. labels: app: nginx spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 resources: limits: cpu: '1' memory: 2Gi requests: cpu: 500m memory: 512Mi -
Jalankan perintah berikut untuk membuat DaemonSet.
kubectl apply -f daemonset.yamlOutput yang diharapkan:
daemonset.apps/nginx-test created -
Jalankan perintah berikut untuk mengkueri detail Pod DaemonSet.
kubectl get pods --all-namespaces -o wide | grep nginx-testOutput berikut menunjukkan bahwa setiap node menjalankan satu Pod.
default nginx-test-8mqvh 1/1 Running 0 3m38s 192.168.*.** cn-shanghai.192.168.**.250 <none> <none> default nginx-test-ltlx6 1/1 Running 0 3m38s 192.168.*.** cn-shanghai.192.168.**.98 <none> <none> default nginx-test-n6zrv 1/1 Running 0 3m38s 192.168.*.** cn-shanghai.192.168.**.17 <none> <none>
Referensi
-
Jika Anda mengalami masalah saat membuat workload, lihat Workload FAQ.
-
Jika Pod mengalami anomali, lihat Troubleshoot pod issues.