GNU/Linux >> Belajar Linux >  >> Cent OS

Apa itu Kubernetes DaemonSet dan Bagaimana Cara Menggunakannya?

Pendahuluan

Kubernetes memungkinkan Anda untuk mengotomatiskan penerapan perangkat lunak, mengelola aplikasi dalam container, dan menskalakan kluster Anda dengan mudah. Beragam objek Kubernetes, termasuk DaemonSets, memberikan tingkat kontrol tambahan.

Gunakan Kubernetes DaemonSets untuk men-deploy Pod tertentu ke setiap node di cluster Anda.

Artikel ini menjelaskan apa itu DaemonSet, kapan menggunakannya, dan cara membuatnya.

Apa itu DaemonSet Kubernetes?

Kubernetes memastikan bahwa aplikasi memiliki sumber daya yang cukup, berjalan dengan andal, dan mempertahankan ketersediaan tinggi sepanjang siklus hidupnya. Lokasi aplikasi dalam cluster bukanlah prioritas.

DaemonSet memungkinkan Anda mengatasi batasan penjadwalan Kubernetes dan memastikan bahwa aplikasi tertentu di-deploy di semua node dalam cluster.m Pod yang di-deploy biasanya berisi proses latar belakang yang perlu disebarluaskan ke seluruh cluster.

DaemonSet biasanya dijelaskan menggunakan file YAML. Kolom dalam file YAML memberi Anda kontrol tambahan untuk proses penyebaran Pod. Contoh yang baik adalah menggunakan label untuk memulai Pod tertentu pada subset node yang terbatas.

Bagaimana Cara Kerja DaemonSet?

DaemonSet adalah objek Kubernetes aktif yang dikelola oleh pengontrol. Anda dapat mendeklarasikan status yang Anda inginkan, yang menunjukkan bahwa Pod tertentu harus ada di setiap node. Loop kontrol rekonsiliasi akan membandingkan keadaan yang diinginkan dengan keadaan yang diamati saat ini. Jika node yang diamati tidak memiliki Pod yang cocok, pengontrol DaemonSet akan membuatnya secara otomatis.

Proses otomatis ini mencakup node yang ada dan semua node yang baru dibuat. Pod yang dibuat oleh pengontrol DaemonSet diabaikan oleh penjadwal Kubernetes dan tetap ada selama node itu sendiri.

DaemonSet membuat Pod di setiap node secara default. Jika perlu, Anda dapat membatasi jumlah node yang dapat diterima dengan menggunakan pemilih node. Kontroler DaemonSet akan membuat Pod hanya pada node yang cocok dengan nodeSelector yang telah ditentukan sebelumnya bidang dalam file YAML.

Mengapa Menggunakan DaemonSet?

DaemonSet dapat meningkatkan kinerja cluster dengan menerapkan Pod yang melakukan tugas pemeliharaan dan layanan dukungan ke setiap node. Proses latar belakang tertentu, aplikasi pemantauan Kubernetes, dan agen lainnya harus ada di seluruh cluster untuk menyediakan layanan yang relevan dan tepat waktu.

DaemonSet sangat cocok untuk layanan yang berjalan lama yang dapat mencakup:

  • Koleksi log
  • Pemantauan sumber daya node (kerangka kerja seperti Prometheus)
  • Penyimpanan cluster
  • Pod terkait infrastruktur (operasi sistem)

Adalah umum untuk satu DaemonSet untuk menyebarkan satu jenis daemon di semua node. Namun, beberapa DaemonSet juga dapat mengontrol satu jenis daemon dengan menggunakan label yang berbeda. Label Kubernetes menentukan aturan penerapan berdasarkan karakteristik masing-masing node.

Bagaimana Cara Membuat DaemonSet?

Anda dapat mendeskripsikan DaemonSet dalam file YAML dan menerapkan file tersebut ke cluster menggunakan perintah kubectl.

Misalnya, daemonset-node-exporter.yaml file di bawah ini menerapkan pengekspor simpul Prometheus, dalam pemantauan namespace, untuk memantau metrik penggunaan perangkat keras pada setiap node dalam cluster.

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: node-exporter
  namespace: monitoring
  labels:
    name: node-exporter
spec:
  template:
    metadata:
      labels:
        name: node-exporter
      annotations:
         prometheus.io/scrape: "true"
         prometheus.io/port: "9100"
    spec:
      hostPID: true
      hostIPC: true
      hostNetwork: true
      containers:
        - ports:
            - containerPort: 9100
              protocol: TCP
          resources:
            requests:
              cpu: 0.15
          securityContext:
            privileged: true
          image: prom/node-exporter:v0.15.2
          args:
            - --path.procfs
            - /host/proc
            - --path.sysfs
            - /host/sys
            - --collector.filesystem.ignored-mount-points
            - '"^/(sys|proc|dev|host|etc)($|/)"'
          name: node-exporter
          volumeMounts:
            - name: dev
              mountPath: /host/dev
            - name: proc
              mountPath: /host/proc
            - name: sys
              mountPath: /host/sys
            - name: rootfs
              mountPath: /rootfs
      volumes:
        - name: proc
          hostPath:
            path: /proc
        - name: dev
          hostPath:
            path: /dev
        - name: sys
          hostPath:
            path: /sys
        - name: rootfs
          hostPath:
            path: /

Akses antarmuka baris perintah Kubernetes Anda dan terapkan file YAML yang baru dibuat:

kubectl apply -f daemonset-node-exporter.yaml

Sistem mengonfirmasi bahwa DaemonSet telah dibuat.

Setelah Anda mengirimkan daemonset-node-exporter DaemonSet, konfirmasikan statusnya saat ini dengan describe perintah:

kubectl describe daemonset node-exporter -n monitoring

Outputnya menawarkan informasi dasar DaemonSet dan menunjukkan bahwa pod telah di-deploy pada semua node yang tersedia.

Anda juga dapat mengonfirmasi ini dengan mendaftar semua pod yang sedang berjalan dengan perintah berikut:

kubectl get pod -o wide -n monitoring

DaemonSet sekarang akan terus men-deploy node-exporter Pod ke semua node yang baru dibuat.

Cara Membatasi DaemonSet ke Node Tertentu

DaemonSets membuat Pod di setiap node dalam cluster secara default, kecuali jika node selector membatasi mereka. Awalnya, perlu untuk menambahkan set label yang diinginkan ke subset node.

Capai ini dengan menggunakan kubectl label memerintah. Tambahkan ssd=true label ke node01 simpul dengan perintah berikut:

kubectl label nodes node01 ssd=true

Pemilih node adalah bagian dari nodeSelector bidang dalam file YAML DaemonSet. Dalam contoh berikut, DaemonSet akan menerapkan Nginx hanya pada node berlabel ssd=true .

apiVersion: apps/v1 
kind: "DaemonSet" 
metadata: 
labels: 
app: nginx 
ssd: "true" 
name: nginx-ssd-storage 
spec: 
template: 
metadata: 
labels: 
app: nginx ssd: "true" 
spec: 
nodeSelector: 
ssd: "true" 
containers: - 
name: nginx 
image: nginx:1.10.0

Menambahkan ssd=true label ke node baru akan menyebarkan nginx-ssd-storage Pod ke simpul itu. Jika sebuah label dihapus dari sebuah node, pengontrol DaemonSet juga menghapus Pod.

Bagaimana Cara Memperbarui DaemonSet?

OnDelete strategi pembaruan adalah satu-satunya cara untuk memperbarui Pod yang dikelola oleh DaemonSet di versi Kubernetes awal (sebelum versi 1.6). Sebuah OnDelete pendekatan mengharuskan Anda untuk menghapus setiap Pod secara manual. Baru setelah itu DaemonSet dapat membuat Pod baru menggunakan konfigurasi baru.

Versi Kubernetes terbaru menggunakan pembaruan bergulir secara default. Strategi pembaruan ditentukan menggunakan spec.updateStrategy.type bidang. Nilai default disetel ke RollingUpdate .

Strategi pembaruan bergulir menghapus Pod lama dan membuat yang baru sebagai gantinya. Prosesnya otomatis dan terkontrol. Menghapus dan membuat semua Pod secara bersamaan dapat menyebabkan tidak tersedianya dan waktu henti yang berkepanjangan.

Dua parameter memungkinkan Anda untuk mengontrol proses pembaruan:

  • minReadySeconds mendefinisikan periode antara upgrade Pod. Nilainya ditentukan dalam hitungan detik, dan menyetel kerangka waktu yang wajar akan mengamankan kesehatan Pod sebelum sistem melanjutkan untuk memperbarui Pod berikutnya.
  • updateStrategy.rollingUpdate.maxUnavailable memungkinkan Anda untuk menentukan jumlah Pod yang dapat ditingkatkan secara bersamaan. Nilai parameter ini sangat tergantung pada jenis aplikasi yang digunakan. Penting untuk menyeimbangkan kecepatan dan keamanan untuk memastikan ketersediaan yang tinggi.

Gunakan kubectl rollout perintah untuk memeriksa status upgrade bergulir DaemonSet:

kubectl rollout status ds/daemonset-node-exporter -n monitoring

Sistem mengamati pembaruan DaemonSet dan memberi tahu Anda tentang status peluncuran pengekspor simpul saat ini. DaemonSet.

Bagaimana Cara Menghapus DaemonSet?

Hapus DaemonSet menggunakan kubectl delete memerintah. Pastikan untuk menentukan nama DaemonSet yang ingin Anda hapus dengan benar:

kubectl delete -f daemonset-node-exporter.yaml -n monitoring

Perintah ini harus digunakan dengan hati-hati. Menghapus DaemonSet juga akan membersihkan semua Pod yang di-deploy DaemonSet tersebut.


Cent OS
  1. Apa itu Perintah Chown di Linux dan Cara Menggunakannya

  2. Chroot “jail” – Apa Itu Dan Bagaimana Cara Menggunakannya?

  3. Apa itu Build-Essential-Ubuntu, bagaimana cara menginstal dan menggunakannya?

  1. Apa itu Umask dan Bagaimana Cara Menggunakannya

  2. Apa itu Perintah cURL Dan Bagaimana Cara Menggunakannya?

  3. Apa dan bagaimana menggunakan folder public_ftp

  1. Rahasia Kubernetes – Cara Membuat, Menggunakan, dan Mengakses Rahasia

  2. Perintah lspci:Apa Itu dan Bagaimana Cara Menggunakannya

  3. Apa itu chroot jail dan Bagaimana Cara Menggunakannya?