DaemonSets pour tâches propres aux nœuds
Utilisez DaemonSets pour exécuter une copie d’un Pod sur tous les nœuds de votre cluster ou sur une sélection de nœuds, pour les opérations à l’échelle du cluster.
DaemonSets pour tâches propres aux nœuds est une leçon DevOps Bootcamp gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage DevOps Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DevOps Bootcamp comprend 4 leçons au total.
Que sont les DaemonSets ?
Imaginez que vous devez exécuter un outil ou un service donné sur chaque serveur de votre cluster. Par exemple, un agent de journalisation qui collecte les journaux de chaque machine.
C’est là que les DaemonSets interviennent ! Contrairement aux déploiements, qui cherchent à maintenir un certain nombre de pods en cours d’exécution quelque part dans le cluster, un DaemonSet garantit qu’une copie d’un pod s’exécute sur tous les nœuds (ou sur les nœuds sélectionnés).
Utilisations courantes des DaemonSets
Les DaemonSets sont parfaitement adaptés aux tâches qui doivent s’exécuter au niveau des nœuds. Voici quelques exemples courants :
- Agents de journalisation : outils comme Fluentd ou Logstash pour collecter les journaux de chaque nœud.
- Agents de surveillance : Prometheus Node Exporter pour recueillir les métriques de chaque serveur.
- Démons de stockage : services comme GlusterFS ou Ceph qui fournissent un stockage distribué sur chaque nœud.
- Proxys réseau : le Kube-proxy de Kubernetes s’exécute lui-même comme un DaemonSet pour gérer les règles réseau.
Manifeste DaemonSet de base
La définition d’un DaemonSet ressemble beaucoup à celle d’un déploiement. La différence essentielle est kind: DaemonSet. Examinons une structure de base :
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.nodeNameÉléments clés du YAML
Examinons les sections importantes de notre manifeste DaemonSet :
kind: DaemonSet: indique à Kubernetes que nous voulons gérer des pods spécifiques aux nœuds.spec.selector: essentiel ! Il définit comment le DaemonSet trouve et gère ses pods à l’aide d’étiquettes.spec.template: il s’agit de la définition du pod lui-même. Elle est presque identique au modèle de pod d’un déploiement. Elle décrit les conteneurs, les volumes et les autres paramètres du pod qui s’exécutera sur chaque nœud.
Déploiement sur tous les nœuds
Voici un DaemonSet simple qui exécute un conteneur busybox sur chaque nœud admissible. Il affichera un message indiquant sur quel nœud il s’exécute.
Il s’agit d’un modèle courant pour les agents agissant à l’échelle du cluster.
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.nodeNameLancer votre DaemonSet
Pour créer le DaemonSet dans votre cluster Kubernetes, utilisez la commande familière kubectl apply avec le fichier YAML que vous venez de voir :
kubectl apply -f node-hello-daemonset.yaml
Kubernetes s’assurera ensuite qu’un pod est planifié sur chaque nœud correspondant aux critères du DaemonSet.
Vérifier l’état du DaemonSet
Après l’application, vous pouvez vérifier l’état de votre DaemonSet et des pods qu’il a créés :
- Pour afficher le DaemonSet :
kubectl get ds - Pour afficher les pods individuels exécutés sur chaque nœud :
kubectl get pods -l app=node-hello -o wide
L’option -o wide vous aide à voir sur quel nœud chaque pod est planifié.
DaemonSets sur des nœuds sélectionnés
Que faire si vous souhaitez que votre DaemonSet s’exécute uniquement sur un sous-ensemble de vos nœuds ? Par exemple, seulement sur les nœuds équipés d’un GPU ou dédiés au stockage.
Vous pouvez y parvenir à l’aide de nodeSelector. Ce champ du spec du pod (dans le modèle du DaemonSet) vous permet de spécifier les étiquettes que doit posséder un nœud pour que le pod y soit planifié.
Utiliser des sélecteurs de nœuds en YAML
Modifions notre DaemonSet précédent afin qu’il s’exécute uniquement sur les nœuds portant l’étiquette disktype: ssd. Vous devez d’abord étiqueter vos nœuds, par exemple avec 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.nodeNameFonctionnalités des DaemonSets
Vous avez appris comment fonctionnent les DaemonSets. Vérifions votre compréhension !
DaemonSets : points essentiels
Excellent travail ! Vous avez appris avec succès les notions essentielles sur les DaemonSets Kubernetes.
- Les DaemonSets garantissent qu’un pod s’exécute sur chaque nœud admissible.
- Ils sont essentiels aux opérations au niveau des nœuds, comme les agents de journalisation, de surveillance et de stockage.
- Vous pouvez utiliser
nodeSelectorpour cibler des nœuds précis. - Les DaemonSets sont définis avec
kind: DaemonSetet utilisent un modèle de pod, comme les déploiements.
Vous allez maintenant découvrir les StatefulSets pour gérer les applications à état !
Questions Fréquemment Posées
La leçon « DaemonSets pour tâches propres aux nœuds » est-elle gratuite ?
Oui — le texte complet de « DaemonSets pour tâches propres aux nœuds » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours DevOps Bootcamp, passe à CoddyKit PRO. Le cours DevOps Bootcamp comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « DaemonSets pour tâches propres aux nœuds » ?
Utilisez DaemonSets pour exécuter une copie d’un Pod sur tous les nœuds de votre cluster ou sur une sélection de nœuds, pour les opérations à l’échelle du cluster. Tu pratiques DevOps Bootcamp avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer DevOps Bootcamp ?
Aucune expérience préalable n'est requise. DevOps Bootcamp sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « DaemonSets pour tâches propres aux nœuds » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon DevOps Bootcamp ?
Oui. Chaque leçon DevOps Bootcamp inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- StatefulSets pour applications avec état
- DaemonSets pour tâches propres aux nœuds
- Comprendre les opérateurs Kubernetes
- Définitions de ressources personnalisées (CRD)