Langsung ke konten utama

Day 90 : Daemonset dalam Kubernetes

Halo semuanya! Hari ini, di hari ke-90 dari perjalanan saya belajar DevOps, saya akan melanjutkan eksplorasi di dunia Kubernetes. Setelah kemarin menulis tentang ReplicaSet, kali ini saya ingin mengajak kalian mengenal lebih dekat dengan salah satu komponen penting di Kubernetes, yaitu DaemonSet. Apa sih sebenarnya DaemonSet itu, dan kenapa ia begitu penting dalam pengelolaan cluster Kubernetes? 

Apa itu DaemonSet?

Bayangkan kalian memiliki sebuah cluster Kubernetes yang terdiri dari banyak node (server). Di setiap node, kalian ingin menjalankan satu aplikasi atau proses tertentu, seperti log collector, monitoring agent, atau network proxy. Tugas inilah yang diselesaikan oleh DaemonSet.

DaemonSet adalah salah satu tipe objek dalam Kubernetes yang memastikan bahwa setiap node di cluster menjalankan exactly one instance dari pod yang ditentukan. Bahkan, jika ada node baru yang ditambahkan ke cluster, Kubernetes akan secara otomatis membuatkan pod baru berdasarkan konfigurasi DaemonSet di node tersebut.



Kenapa Penting?

Pikirkan jika kalian harus secara manual mengatur setiap node agar menjalankan aplikasi tertentu—pasti sangat merepotkan, terutama dalam skala besar! Dengan DaemonSet, semuanya jadi otomatis dan terpusat. Contoh kasus penggunaan DaemonSet antara lain:

  1. Logging: Menggunakan agen seperti Fluentd atau Filebeat untuk mengumpulkan log dari semua node.
  2. Monitoring: Menggunakan Prometheus Node Exporter untuk memantau metrik setiap node.
  3. Networking: Menjalankan alat seperti Calico atau Weave Net untuk manajemen jaringan cluster.

Konfigurasi DaemonSet

Berikut adalah contoh file YAML konfigurasi DaemonSet yang bisa langsung kalian gunakan:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: daemon-set-shefa
  labels:
    label-key1: label-value1
  annotations:
    annotation-key1: annotation-value1
spec:
  selector:
    matchLabels:
      label-key1: label-value1
    matchExpressions:
      - key: label-key1
        operator: In
        values:
          - label-value1
  template:
    metadata:
      name: pod-name
      labels:
        label-key1: label-value1
    spec:
      containers:
        - name: container-name
          image: image-name
          ports:
            - containerPort: 80
          readinessProbe:
            httpGet:
              path: /health
              port: 80
            initialDelaySeconds: 0
            periodSeconds: 10
            failureThreshold: 3
            successThreshold: 1
            timeoutSeconds: 1

Penjelasan Konfigurasi

  1. Metadata: Memberikan nama dan label untuk DaemonSet agar mudah dikenali.
  2. Selector: Menentukan pod-pod yang akan dikelola oleh DaemonSet menggunakan kombinasi matchLabels dan matchExpressions.
  3. Template: Mendefinisikan pod yang akan dibuat, termasuk container, port, dan readinessProbe untuk memeriksa kesehatan aplikasi.
  4. Readiness Probe: Memastikan bahwa pod hanya dianggap siap jika memenuhi kriteria kesehatan yang telah ditentukan.

Cara Menggunakan

Terapkan konfigurasi di atas ke cluster Kubernetes kalian dengan perintah berikut:

kubectl apply -f daemon-set.yaml

Untuk melihat statusnya, gunakan perintah ini:

kubectl get daemonset kubectl describe daemonset daemon-set-shefa

Kesimpulan

Dengan DaemonSet, pengelolaan aplikasi yang harus berjalan di setiap node menjadi lebih efisien dan otomatis. Konfigurasi YAML di atas adalah salah satu contoh sederhana yang bisa kalian gunakan dan modifikasi sesuai kebutuhan.

Itulah pembahasan saya tentang DaemonSet di Kubernetes. Selanjutnya, saya akan membahas fitur Kubernetes lainnya yang tidak kalah menarik. Sampai jumpa, dan tetap semangat belajar DevOps! 😊

Komentar

Postingan populer dari blog ini

Day 109 : Akhir dari Perjalanan PKL: Terima Kasih untuk PT Excellent

Hari ini adalah hari terakhir saya menjalani PKL di PT Excellent. Momen ini menjadi penutup dari perjalanan yang luar biasa penuh pembelajaran, pengalaman, dan kenangan yang tak terlupakan. Saya ingin menyampaikan rasa terima kasih yang sebesar-besarnya kepada keluarga besar PT Excellent atas kesempatan, bimbingan, dan kepercayaan yang telah diberikan kepada saya selama saya melaksanakan PKL di sini. Selama PKL, saya mendapatkan banyak pengetahuan baru yang sebelumnya belum pernah saya pelajari. Dari segi teknis, saya belajar banyak tentang teknologi seperti Zimbra, bahasa pemrograman Golang, hingga DevOps hal-hal yang awalnya terasa asing, kini menjadi ilmu yang berharga dan menjadi ilmu baru bagi saya. Namun, pembelajaran saya di PT Excellent tidak hanya terbatas pada aspek teknis. Saya juga belajar tentang kedisiplinan, tanggung jawab, profesionalisme, serta bagaimana pentingnya kolaborasi dalam lingkungan kerja. Terima kasih kepada Mas Ridwan, yang selalu membimbing saya dengan sab...

Day 108 : H-2 menuju akhir PKL

Waktu rasanya berjalan begitu cepat. Hari ini sudah masuk H-2 menuju akhir masa PKL saya di PT Excellent. Ada perasaan campur aduk antara lega karena akhirnya berhasil menyelesaikan semuanya, senang karena banyak pengalaman baru yang saya dapatkan, tapi juga sedikit. PKL di PT Excellent bukan cuma soal kerjaan atau belajar teknis, tapi juga perjalanan penuh cerita dan pelajaran. Setiap hari yang saya jalani di sini selalu memberi pengalaman baru, baik dari tugas yang menantang, bimbingan dari mentor, maupun suasana kerja yang hangat. Salah satu hal yang paling membekas adalah semangat belajar dari Pak Bos. Beliau pernah bercerita tentang bagaimana sibuknya beliau tapi tetap bisa belajar bahasa baru bahkan lebih dari satu bahasa. Itu benar-benar membuka mata saya, bahwa waktu senggang yang sering terbuang sebenarnya bisa dimanfaatkan untuk hal-hal yang lebih produktif. Mas Ridwan, yang selalu menemani kami saat briefing pagi, juga memberikan banyak pelajaran berharga. Setiap pagi kami b...

Day 82 : Membuat image dengan bahasa pemrograman golang

Hari ini, saya melanjutkan perjalanan belajar Docker dengan memanfaatkan Visual Studio Code (VSCode), editor favorit saya. Fokus utama saya adalah memahami cara membuat Docker image menggunakan alur kerja yang terintegrasi dengan VSCode. Proses ini tidak hanya efisien tetapi juga menyenangkan karena VSCode memiliki ekosistem yang kaya, termasuk berbagai ekstensi pendukung yang mempermudah pekerjaan. Mengapa Menggunakan VSCode untuk Docker? VSCode menyediakan lingkungan pengembangan yang lengkap dengan berbagai fitur, seperti: Docker Extension : Mempermudah pengelolaan image, container, dan jaringan Docker langsung dari editor. Terminal Terintegrasi : Menjalankan perintah Docker langsung dari VSCode tanpa perlu beralih aplikasi. Debugging Tools : Membantu melacak masalah aplikasi yang berjalan di dalam container, terutama bagi pengembang Golang. Dengan semua keunggulan ini, VSCode menjadi alat yang sangat mendukung dalam pengembangan berbasis Docker. Langkah-langkah Membuat Docker Image...