Düğüme Özel Görevler için DaemonSets
Küme düzeyindeki işlemler için kümenizdeki tüm düğümlerde veya seçili düğümlerde bir Pod kopyası çalıştırmak üzere DaemonSets kullanın.
Düğüme Özel Görevler için DaemonSets, CoddyKit'te ücretsiz bir Kubernetes Basics dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kubernetes Basics öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kubernetes Basics kursu toplamda 4 dersten oluşur.
DaemonSets Nedir?
Kümenizdeki her sunucuda belirli bir aracın veya hizmetin çalışması gerektiğini düşünün. Örneğin, her makineden günlükleri toplayan bir günlük aracısı.
DaemonSets tam da bu durumda kullanılır! Kümede bir yerde belirli sayıda Pod'u çalışır durumda tutmayı amaçlayan Dağıtımların aksine, bir DaemonSet tüm (veya seçilen) düğümlerde bir Pod kopyasının çalışmasını sağlar.
Yaygın DaemonSet Kullanım Alanları
DaemonSets, düğüm düzeyinde çalışması gereken görevler için idealdir. Yaygın bazı örnekler şunlardır:
- Günlük Aracıları: Her düğümden günlükleri toplamak için Fluentd veya Logstash gibi araçlar.
- İzleme Aracıları: Her sunucudan ölçümleri toplamak için Prometheus Node Exporter.
- Depolama Artalan Süreçleri: Her düğümde dağıtık depolama sağlayan GlusterFS veya Ceph gibi hizmetler.
- Ağ Vekilleri: Kubernetes'in kendi Kube-proxy'si, ağ kurallarını yönetmek için DaemonSet olarak çalışır.
Temel DaemonSet Bildirimi
Bir DaemonSet'in tanımı, bir Dağıtımın tanımına çok benzer. Temel fark kind: DaemonSet değeridir. Basit bir yapıya bakalım:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: my-daemonset
spec:
selector:
matchLabels:
app: my-daemonset-app
template:
metadata:
labels:
app: my-daemonset-app
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "echo 'Hello from DaemonSet on node $(NODE_NAME)'; sleep 3600"]
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeNameYAML'ın Temel Bölümleri
DaemonSet bildirimimizin önemli bölümlerini inceleyelim:
kind: DaemonSet: Bu, Kubernetes'e düğüme özgü Pod'ları yönetmek istediğimizi bildirir.spec.selector: Çok önemlidir! DaemonSet'in etiketleri kullanarak Pod'larını nasıl bulup yöneteceğini tanımlar.spec.template: Bu, Pod tanımının kendisidir. Dağıtımda bulacağınız Pod şablonuyla neredeyse aynıdır. Her düğümde çalışacak Pod için kapsayıcıları, birimleri ve diğer ayarları açıklar.
Tüm Düğümlere Dağıtma
Burada, uygun durumdaki her düğümde bir busybox kapsayıcısı çalıştıran basit bir DaemonSet bulunmaktadır. Çalıştığı düğümü belirten bir ileti yazdırır.
Bu, küme genelindeki aracılar için yaygın bir kalıptır.
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: node-hello-daemon
spec:
selector:
matchLabels:
app: node-hello
template:
metadata:
labels:
app: node-hello
spec:
containers:
- name: hello-container
image: busybox
command: ["sh", "-c", "while true; do echo 'Hello from node: $(NODE_NAME)'; sleep 5; done"]
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeNameDaemonSet'inizi Başlatma
DaemonSet'i Kubernetes kümenizde oluşturmak için az önce gördüğünüz YAML dosyasıyla birlikte bilinen kubectl apply komutunu kullanın:
kubectl apply -f node-hello-daemonset.yaml
Kubernetes daha sonra DaemonSet'in ölçütlerini karşılayan her düğümde bir Pod'un zamanlanmasını sağlar.
DaemonSet Sağlığını Denetleme
Uygulama sonrasında DaemonSet'inizin ve oluşturduğu Pod'ların durumunu denetleyebilirsiniz:
- DaemonSet'i görmek için:
kubectl get ds - Her düğümde çalışan tek tek Pod'ları görmek için:
kubectl get pods -l app=node-hello -o wide
-o wide seçeneği, her Pod'un hangi düğümde zamanlandığını görmenize yardımcı olur.
Seçilen Düğümlerde DaemonSets
DaemonSet'inizin yalnızca düğümlerinizin bir alt kümesinde çalışmasını istiyorsanız ne yapmalısınız? Örneğin yalnızca GPU içeren düğümlerde veya depolamaya ayrılmış düğümlerde çalışmasını isteyebilirsiniz.
Bunu nodeSelector kullanarak sağlayabilirsiniz. Pod'un spec bölümü içindeki bu alan (DaemonSet'in şablonunda bulunur), bir Pod'un orada zamanlanabilmesi için düğümün sahip olması gereken düğüm etiketlerini belirtmenize olanak tanır.
YAML'da Düğüm Seçicileri Kullanma
Önceki DaemonSet'imizi yalnızca disktype: ssd etiketi bulunan düğümlerde çalışacak şekilde değiştirelim. Öncelikle düğümlerinizi etiketlemeniz gerekir; ör. kubectl label node <node-name> disktype=ssd.
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: ssd-monitor-daemon
spec:
selector:
matchLabels:
app: ssd-monitor
template:
metadata:
labels:
app: ssd-monitor
spec:
nodeSelector:
disktype: ssd # Only runs on nodes with this label
containers:
- name: monitor-container
image: busybox
command: ["sh", "-c", "while true; do echo 'Monitoring SSD on node: $(NODE_NAME)'; sleep 10; done"]
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeNameDaemonSet Yetenekleri
DaemonSets'in nasıl çalıştığını öğrendiniz. Anlayışınızı sınayalım!
DaemonSets: Önemli Noktalar
Harika iş çıkardınız! Kubernetes DaemonSets hakkında başarıyla bilgi edindiniz.
- DaemonSets, uygun durumdaki her düğümde bir Pod'un çalışmasını sağlar.
- Günlük, izleme ve depolama aracıları gibi düğüm düzeyindeki işlemler için kritik öneme sahiptirler.
- Belirli düğümleri hedeflemek için
nodeSelectorkullanabilirsiniz. - DaemonSets,
kind: DaemonSetile tanımlanır ve Dağıtımlara benzer şekilde bir Pod şablonu kullanır.
Sırada, durum bilgisi tutan uygulamaları yönetmek için StatefulSets'i inceleyeceksiniz!
Sıkça Sorulan Sorular
“Düğüme Özel Görevler için DaemonSets” dersi ücretsiz mi?
Evet — “Düğüme Özel Görevler için DaemonSets” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kubernetes Basics kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kubernetes Basics kursu toplamda 4 dersten oluşur.
“Düğüme Özel Görevler için DaemonSets” dersinde ne öğreneceğim?
Küme düzeyindeki işlemler için kümenizdeki tüm düğümlerde veya seçili düğümlerde bir Pod kopyası çalıştırmak üzere DaemonSets kullanın. Kubernetes Basics ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Kubernetes Basics öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Kubernetes Basics, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Düğüme Özel Görevler için DaemonSets” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Kubernetes Basics dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Kubernetes Basics dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Durumlu Uygulamalar için StatefulSets
- Düğüme Özel Görevler için DaemonSets
- Kubernetes Operatörlerini Anlama
- Özel Kaynak Tanımları (CRD'ler)