DaemonSets voor nodespecifieke taken
Gebruik DaemonSets om op alle of geselecteerde nodes in uw cluster een kopie van een Pod uit te voeren voor clusterbrede bewerkingen.
DaemonSets voor nodespecifieke taken is een gratis DevOps-bootcamp-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject DevOps-bootcamp. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus DevOps-bootcamp bevat in totaal 4 lessen.
Wat zijn DaemonSets?
Stel dat je een specifieke tool of service op elke server in je cluster wilt uitvoeren. Een voorbeeld is een logging-agent die logs van elke machine verzamelt.
Daar komen DaemonSets van pas! In tegenstelling tot Deployments, die proberen een bepaald aantal Pods ergens in het cluster actief te houden, zorgt een DaemonSet ervoor dat op alle (of geselecteerde) nodes een kopie van een Pod draait.
Veelgebruikte toepassingen van DaemonSets
DaemonSets zijn ideaal voor taken die op knooppuntniveau moeten worden uitgevoerd. Hier zijn enkele veelvoorkomende voorbeelden:
- Logging-agents: tools zoals Fluentd of Logstash om logs van elke node te verzamelen.
- Monitoring-agents: Prometheus Node Exporter om metingen van elke server te verzamelen.
- Opslagdaemons: services zoals GlusterFS of Ceph die gedistribueerde opslag op elke node bieden.
- Netwerkproxies: de eigen Kube-proxy van Kubernetes draait als DaemonSet om netwerkregels te beheren.
Basis-implementatiebestand voor een DaemonSet
De definitie van een DaemonSet lijkt sterk op die van een Deployment. Het belangrijkste verschil is kind: DaemonSet. Bekijk deze basisstructuur:
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.nodeNameBelangrijke onderdelen van de YAML
Laten we de belangrijke secties van ons DaemonSet-implementatiebestand bekijken:
kind: DaemonSet: hiermee vertel je Kubernetes dat je Pods die specifiek aan nodes zijn gebonden wilt beheren.spec.selector: essentieel! Hiermee wordt bepaald hoe de DaemonSet zijn Pods vindt en beheert met behulp van labels.spec.template: dit is de Pod-definitie zelf. Deze is vrijwel identiek aan de Pod-sjabloon in een Deployment. De definitie beschrijft de containers, volumes en andere instellingen voor de Pod die op elke node wordt uitgevoerd.
Implementeren op alle nodes
Hier is een eenvoudige DaemonSet die een busybox-container uitvoert op elke geschikte node. De container drukt een bericht af waarin staat op welke node deze wordt uitgevoerd.
Dit is een veelgebruikt patroon voor agents die clusterbreed werken.
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.nodeNameJe DaemonSet starten
Gebruik de vertrouwde opdracht kubectl apply met het YAML-bestand dat je zojuist hebt gezien om de DaemonSet in je Kubernetes-cluster te maken:
kubectl apply -f node-hello-daemonset.yaml
Kubernetes zorgt er vervolgens voor dat een Pod wordt gepland op elke node die aan de criteria van de DaemonSet voldoet.
Status van een DaemonSet controleren
Na het toepassen kun je de status van je DaemonSet en de gemaakte Pods controleren:
- De DaemonSet bekijken:
kubectl get ds - De afzonderlijke Pods bekijken die op elke node draaien:
kubectl get pods -l app=node-hello -o wide
Met de optie -o wide zie je op welke node elke Pod is gepland.
DaemonSets op geselecteerde nodes
Wat als je je DaemonSet slechts op een deel van je nodes wilt uitvoeren? Bijvoorbeeld alleen op nodes met een GPU of op nodes die voor opslag zijn bedoeld.
Je kunt dit bereiken met nodeSelector. Met dit veld in de spec van de Pod (binnen de sjabloon van de DaemonSet) geef je de labels op die een node moet hebben om de Pod daar te kunnen plannen.
Node-selectors gebruiken in YAML
Laten we onze vorige DaemonSet aanpassen zodat deze alleen wordt uitgevoerd op nodes met het label disktype: ssd. Je moet je nodes eerst labelen, bijvoorbeeld met 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.nodeNameMogelijkheden van DaemonSets
Je hebt geleerd hoe DaemonSets werken. Test je begrip!
DaemonSets: belangrijkste punten
Goed gedaan! Je hebt Kubernetes DaemonSets met succes leren kennen.
- DaemonSets zorgen ervoor dat op elke geschikte node een Pod draait.
- Ze zijn essentieel voor bewerkingen op knooppuntniveau, zoals agents voor logging, monitoring en opslag.
- Je kunt
nodeSelectorgebruiken om specifieke nodes te selecteren. - DaemonSets worden gedefinieerd met
kind: DaemonSeten gebruiken een Pod-sjabloon, vergelijkbaar met Deployments.
Hierna verken je StatefulSets voor het beheren van stateful toepassingen!
Leer DevOps-bootcamp met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 142
- Lessen
- 568
Veelgestelde vragen
Is de les “DaemonSets voor nodespecifieke taken” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad DevOps-bootcamp, waaronder “DaemonSets voor nodespecifieke taken”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus DevOps-bootcamp bevat in totaal 4 lessen.
Wat leer ik in “DaemonSets voor nodespecifieke taken”?
Gebruik DaemonSets om op alle of geselecteerde nodes in uw cluster een kopie van een Pod uit te voeren voor clusterbrede bewerkingen. Je oefent met DevOps-bootcamp door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met DevOps-bootcamp te beginnen?
Ervaring vooraf is niet nodig. DevOps-bootcamp op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “DaemonSets voor nodespecifieke taken”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over DevOps-bootcamp?
Ja. Elke les over DevOps-bootcamp bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- StatefulSets voor stateful apps
- DaemonSets voor nodespecifieke taken
- Kubernetes Operators begrijpen
- Custom Resource Definitions (CRD's)