Daemonset Nedir?
Cluster’da her Node üzerinde belirlediğimiz bir Pod’u
çalıştırma yöntemidir.
Genellikle loglama, monitör etme işlemleri için kullanılan
default Podların oluşturuması için kullanılır.
Örneğin; Cluster’ı ölçeklendirmek için node eklendiği zaman
her node’a default olarak log toplamak için Fluentd gibi bir uygulamanın
otomatik kurulması için (imaj ile pod’un oluşturulması) kullanılır.
Aşağıdaki mimaride yeni bir Node (Node-4 10.0.0.5) eklendiği
zaman bu Node üzerinde default Fluend Pod’unun hali hazırda kurulması sağlanır.
Bunun gibi özel gereksinimler ve özel işler için Node’lara
deploy edilebilirler.
Asıl uygulamaların çalıştırılacağı Pod’ları oluşturmadan
önce Node’larda ön hazırlık olması gereken durumlarda kullanılabilir.
Genellikle dışarıya data push etmek için DaemonSetler
kullanılıyor.
Aslında DaemonSet Node üzerinde bir agent gibi çalışıyor.
Daemonset’e Nasıl
Erişilir?
-
Daemonset oluşturulduğunda port numarası verilip
NodeIP-Port bilgisi üzerinden erişilebilir.
-
Daemonset podları bir service objesine bind
edilip service üzerinden erişilebilir.
Komutlar:
#cluster kontrol edelim
kubectl get nodes
kubectl describe node node1
#daemonset oluşturalım
kubectl create -f fluentd.yaml
#daemonsetlere bakalım desired ve current 0 olarak görülecek çünkü henüz pod oluşturulmadı
kubectl get ds
#daemonset üzerinde çalışan podlara bakalım
kubectl get pods
Dikkat:
Daemonset'in podları oluşturması için fluentd.yaml olan dosyada nodeSelector altında app:collector-node alanındaki label'a göre pod oluşturulur.
#elimizdeki node'a label atayacağız
kubectl label node node1 app=collector-node
#bu node içindeki labelları görmek için
kubectl decribe node node1
#daha önce bu label oluşturulduysa zaten var diye hata verir. Bu durumda label overwrite edilmelidir.
kubectl label node node1 app=collector-node --overwrite
#daemonsetlere bakalım desired ve current 0 olarak görülmüştü artık 1 olacak çünkü label eşleşti ve pod oluşturuldu
kubectl get ds
Böylece ilk başta kubernetes'de başlatılan daemonset label eşleşmediği için herhangi bir node bulamadı. Daha sonra label eşleşince pod ayağa kalktı.
#podları görelim
kubectl get pods
#bu node içindeki labelları görelim
kubectl decribe node node1
#daemonset'i silelim
kubectl delete ds data-collector-ds
# ds olmadığını görelim
kubectl get ds
#daemonset silindiği için pod'un state'i artık Terminating olacak ve deamonsetle ilişkili olan podlar da siliecek
#pod'un terminating olduğunu görelim
kubectl get pods
Hiç yorum yok:
Yorum Gönder