Formation-K8S

Formation K8S avec exercices et labs

View project on GitHub

DaemonSet

Role

Le but d’un daemonSet est d’installer un pod sur chaque node du cluster sans avoir à se préoccuper de la cardinalité contrairement à un statefulSet ou un deployment. Quand un Node est rajouté au cluster, le daemonSet cherchera à y installer un pod. Quand un Node est retiré du cluster, le Pod qui était présent sur ce Node ne va pas être “re schedulé” ailleurs. L’usage courant d’un daemonSet est d’offrir une fonctionnalité par rapport à chaque node. Par exemples :

  • la récupération et agrégation des logs des containers situés sur l’hôte du node,
  • l’installation d’un outil sur chaque node,
  • l’installation d’une couche réseau.

schema

Attention : Le daemonSet ne s’affranchit pas des contraintes posées sur le cluster : taint/resources/… ie si un pod n’a pas le droit de s’installer sur un Node il n’y sera pas !

Structure

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: nginx-ingress
spec:
  selector:
    matchLabels:
      app: nginx-ingress
  template:
    metadata:
      labels:
        app: nginx-ingress
    spec:
      containers:
      - image: nginx/nginx-ingress:2.0.3
        imagePullPolicy: IfNotPresent
        name: nginx-ingress
        ports:
        - name: http
          containerPort: 80
          hostPort: 80
        periodSeconds: 1
        securityContext:
          allowPrivilegeEscalation: true
          runAsUser: 101 #nginx
          capabilities:
            drop:
            - ALL
            add:
            - NET_BIND_SERVICE
        env:
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        args:
          - -nginx-configmaps=$(POD_NAMESPACE)/nginx-config
          - -default-server-tls-secret=$(POD_NAMESPACE)/default-server-secret

Exercices :

  • instancier le daemonset donné dans l’exemple
  • trouver pourquoi les pod ne sont pas Ready

Retour, Menu, Suite