Aide-mémoire CKAD

exemple YAML DaemonSet k8s

Un DaemonSet pose un Pod sur chaque nœud matching. Nouveau nœud → nouveau Pod. Nœud parti → Pod parti.

Un agent identique posté à chaque baie.
YAML puis apply
kubectl create deploy agent --image=nginx:1.27 -o yaml --dry-run=client > ds.yaml
# kind: DaemonSet — delete replicas and strategy
kubectl apply -f ds.yaml
YAML
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: agent
  namespace: default
spec:
  selector:
    matchLabels:
      app: agent
  template:
    metadata:
      labels:
        app: agent
    spec:
      containers:
        - name: nginx
          image: nginx:1.27
Sous-ensemble de nœuds
spec:
  template:
    spec:
      nodeSelector:
        disk: ssd
      tolerations:
        - key: node-role.kubernetes.io/control-plane
          operator: Exists
          effect: NoSchedule
      containers:
        - name: shipper
          image: busybox:1.36
          command: ["sleep", "1d"]
          volumeMounts:
            - name: varlog
              mountPath: /var/log
      volumes:
        - name: varlog
          hostPath:
            path: /var/log
Rollout
kubectl set image ds/agent nginx=nginx:1.28
kubectl rollout status ds/agent
kubectl rollout history ds/agent
kubectl rollout undo ds/agent
kubectl get ds,po -l app=agent -o wide
kubectl drain node-1 --ignore-daemonsets --delete-emptydir-data

Champs

selector
Doit matcher template.metadata.labels. Immuable après create.
template
Le Pod. Pas de champ replicas — un par nœud matching.
nodeSelector
Seuls les nœuds matching reçoivent un Pod. L’omettre = chaque nœud Ready.
tolerations
Les nœuds tainted (control-plane) restent vides sans ça.
updateStrategy
RollingUpdate est le défaut. OnDelete attend que vous supprimiez chaque Pod.
hostPath
Le système de fichiers du nœud. Typique pour un agent de logs. Le path est sur le nœud, pas dans l’image.
replicas
Pas un champ DaemonSet. À supprimer si vous dry-run un Deployment.
kubectl create deploy
Pas de générateur DaemonSet. Dry-run un Deployment, puis kind: DaemonSet et enlever replicas.
kubectl rollout
Marche sur un DaemonSet comme sur un Deployment.

Pièges

  • Pas de champ replicas. Un Pod par nœud matching. Un nouveau nœud en reçoit un ; un nœud parti le perd.
  • selector.matchLabels et template.metadata.labels doivent matcher. Le selector est immuable après create.
  • Pas de kubectl create daemonset. Dry-run un Deployment, kind: DaemonSet, supprimer replicas et strategy.

Doc officielle DaemonSets

S’entraîner sur un cluster réel →