All Products
Search
Document Center

Container Service for Kubernetes:Buat DaemonSet

Last Updated:Mar 07, 2026

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 dengan nodeSelector: { disktype: ssd }, maka ia hanya berjalan di node yang memiliki label disktype=ssd.

  • Konfigurasi afinitas: Konfigurasi afinitas dan anti-afinitas node serta Pod juga berlaku untuk DaemonSet.

Catatan

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.

Tampilkan Pod kube-proxy

Komponen Kubernetes default, kube-proxy, diterapkan di setiap node melalui DaemonSet. Jalankan perintah berikut untuk melihat Pod yang termasuk dalam kube-proxy.

kubectl get pods --all-namespaces -o wide | grep kube-proxy

Output yang diharapkan ditunjukkan di bawah ini. Terdapat satu Pod kube-proxy di setiap node. Karena kube-proxy menggunakan mode hostNetwork (hostNetwork: true), alamat IP Pod tersebut sama dengan alamat IP nodenya.

kube-system     kube-proxy-worker-hfzkh     1/1     Running     0          2d21h   192.168.*.92    cn-shanghai.192.168.*.92   <none>           <none>
kube-system     kube-proxy-worker-pxnnf     1/1     Running     0          2d21h   192.168.*.11    cn-shanghai.192.168.*.11   <none>           <none>
kube-system     kube-proxy-worker-r2t26     1/1     Running     0          2d21h   192.168.*.7     cn-shanghai.192.168.*.7    <none>           <none>
Penting

Buat DaemonSet

Anda dapat membuat DaemonSet menggunakan Konsol atau kubectl.

Buat melalui Konsol

  1. Masuk ke Container Service Management Console . Di panel navigasi sebelah kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik Workloads > DaemonSets.

  3. Pada halaman DaemonSets, klik Create from Image.

  4. 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

Penting

Sebelum membuat workload, pastikan Anda telah terhubung ke kluster menggunakan kubectl. Untuk informasi selengkapnya, lihat Hubungkan ke kluster menggunakan kubectl.

  1. 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
  2. Jalankan perintah berikut untuk membuat DaemonSet.

    kubectl apply -f daemonset.yaml

    Output yang diharapkan:

    daemonset.apps/nginx-test created
  3. Jalankan perintah berikut untuk mengkueri detail Pod DaemonSet.

    kubectl get pods --all-namespaces -o wide | grep nginx-test

    Output 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