Les Dae­mon­Sets Ku­ber­netes fa­ci­li­tent la gestion des ap­pli­ca­tions ou services qui doivent être exécutés sur chaque nœud. La con­fi­gu­ra­tion et les mo­di­fi­ca­tions d’un DaemonSet sont au­to­ma­ti­que­ment ap­pli­quées à tous les nœuds.

Qu’est-ce qu’un DaemonSet Ku­ber­netes ?

Les Dae­mon­Sets Ku­ber­netes sont des res­sources qui ga­ran­tis­sent l’exécution d’au moins une instance d’un pod donné sur chaque nœud du cluster. L’ap­pli­ca­tion ou le service est ainsi glo­ba­le­ment présent dans tout l’en­vi­ron­ne­ment du cluster. Les Dae­mon­Sets sont par­ti­cu­liè­re­ment adaptés aux tâches telles que la sur­veil­lance, la jour­na­li­sa­tion ou les services réseau qui doivent être présents sur chaque nœud du cluster. L’un des prin­ci­paux avantages des Dae­mon­Sets est leur sca­la­bi­lité, car ils démarrent au­to­ma­ti­que­ment et sup­pri­ment les pods existants lorsque les nœuds tombent en panne ou sont supprimés. Les Dae­mon­Sets amé­lio­rent ainsi la sécurité contre les pannes et fa­ci­li­tent la gestion du cluster.

Conseil

Avec la solution Cloud Managed Ku­ber­netes de IONOS, vous bé­né­fi­ciez d’une con­fi­gu­ra­tion de cluster en­tiè­re­ment au­to­ma­ti­sée ainsi que de charges de travail hautement per­for­mantes et d’une sécurité contre les pannes.

Con­fi­gu­ra­tion d’un DaemonSet Ku­ber­netes

La dis­tri­bu­tion des pods peut être contrôlée de manière gra­nu­laire sur la base des pro­prié­tés des nœuds, des besoins en res­sources ou d’autres critères définis par l’uti­li­sa­teur. Nous vous ex­pli­quons ci-dessous comment con­fi­gu­rer et utiliser un DaemonSet.

Créer un fichier YAML DaemonSet

Tout d’abord, vous devez définir la con­fi­gu­ra­tion du DaemonSet dans un fichier YAML. Ce fichier contient des in­for­ma­tions telles que le nom du DaemonSet, le type de pod utilisé et les pa­ra­mètres spé­ci­fiques pour le placement sur les nœuds.

Voici un exemple de fichier YAML qui crée un pod avec un conteneur NGINX sur chaque nœud :

apiVersion: apps/v1
kind: DaemonSet
metadata:
    name: nginx-daemonset
spec:
    selector:
        matchLabels:
            app: nginx
    template:
        metadata:
            labels:
                app: nginx
        spec:
            containers:
            - name: nginx-container
                image: nginx:latest
yaml

Activer la con­fi­gu­ra­tion YAML

Ouvrez votre ligne de commande et accédez au ré­per­toire dans lequel se trouve votre fichier DaemonSet YAML. Exécutez ensuite la commande kubectl apply pour appliquer la con­fi­gu­ra­tion à votre cluster Ku­ber­netes :

kubectl apply -f daemonset.yaml
shell

Cette commande indique au cluster Ku­ber­netes de créer ou de mettre à jour les res­sources définies dans le fichier YAML.

Vérifier le DaemonSet Ku­ber­netes

Vous devez contrôler si les pods souhaités ont été lancés avec succès sur chaque nœud.

kubectl get daemonset
shell

La sortie de cette commande contient des in­for­ma­tions im­por­tantes, dont :

  • DESIRED : le nombre souhaité de pods à créer par le DaemonSet.
  • CURRENT : le nombre réel de pods fournis.
  • READY : le nombre de pods déployés qui sont prêts à être utilisés.
  • UP-TO-DATE : le nombre de pods qui sont ac­tuel­le­ment à jour par rapport à la con­fi­gu­ra­tion du DaemonSet.
  • AVAILABLE : le nombre de pods opé­ra­tion­nels qui ne sont pas affectés par d’autres res­sources, telles que les affinités ou les to­lé­rances.
  • NODE SELECTOR : les éti­quettes pour les nœuds sur lesquels le DaemonSet doit fonc­tion­ner (si configuré).
  • AGE : quand le DaemonSet a été créé.

Dans notre exemple, vous voyez que le DaemonSet Ku­ber­netes nginx-daemonset a trois pods souhaités et que trois pods sont en cours d’exécution sur les nœuds.

NAME                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
nginx-daemonset              3         3        3         3            3          <none>       5m
shell

Vérifier les pods

Pour obtenir une vue plus détaillée des pods créés, utilisez cette commande :

kubectl get pods
shell

La sortie montre l’état des pods, y compris l’état de pré­pa­ra­tion, l’état actuel et le temps d’exécution.

NAME                      READY   STATUS    RESTARTS       AGE
nginx-daemonset-abcde     1/1      Running      0          5m
nginx-daemonset-fghij     1/1      Running      0          5m
nginx-daemonset-klmno     1/1      Running      0          5m
shell

Supprimer le DaemonSet

Tout d’abord, vous devez vérifier quels Dae­mon­Sets sont présents dans votre cluster. Tapez la commande kubectl delete daemonset suivie du nom du DaemonSet à supprimer dans la console. Par exemple :

kubectl delete daemonset nginx-daemonset
shell

Limiter les Dae­mon­Sets Ku­ber­netes à des nœuds spé­ci­fiques

Pour exécuter des Dae­mon­Sets sur des nœuds spé­ci­fiques dans un cluster Ku­ber­netes, vous pouvez utiliser des sé­lec­teurs de nœuds ou des affinités dans la con­fi­gu­ra­tion DaemonSet. Cela vous permet de définir les nœuds sur lesquels les pods DaemonSet doivent être créés.

apiVersion: apps/v1
kind: DaemonSet
metadata:
    name: nginx-daemonset
spec:
    selector:
        matchLabels:
            app: nginx
    template:
        metadata:
            labels:
                app: nginx
        spec:
            nodeSelector:
                custom-label: special-node
            containers:
            - name: nginx-container
                image: nginx:latest
yaml

Dans cet exemple, le DaemonSet est configuré pour ne fonc­tion­ner que sur les nœuds avec l’étiquette custom-label : special-node.

Com­mu­ni­quer avec les pods DaemonSet

La com­mu­ni­ca­tion avec les pods Daemon dans Ku­ber­netes peut se faire de dif­fé­rentes manières, en fonction des besoins de votre ap­pli­ca­tion.

  • Push : dans ce scénario, les pods DaemonSet envoient ac­ti­ve­ment des données ou des mises à jour à un service externe. Ce service externe pourrait être, par exemple, une base de données sta­tis­tique ou un système de log central. Les pods DaemonSet eux-mêmes n’ont pas de clients et n’initient pas de con­nexions entrantes.
  • NodeIP et port connu : avec cette méthode, chaque pod DaemonSet utilise un port spé­ci­fique sur le nœud pour être ac­ces­sible. Les clients con­nais­sent la liste des IP de nœuds dis­po­nibles et at­teig­nent les pods par l’IP de nœud et le port cor­res­pon­dant.
  • DNS : en utilisant un __headless service__ avec le même sélecteur de pod que le DaemonSet Ku­ber­netes, vous pouvez activer une ré­so­lu­tion DNS pour les pods in­di­vi­duels. Les clients peuvent alors com­mu­ni­quer avec les pods DaemonSet en utilisant la ressource Endpoints ou en ré­cu­pé­rant plusieurs en­re­gis­tre­ments A dans le DNS.
  • Service : la création d’un service Ku­ber­netes régulier avec le même sélecteur de pod permet aux clients d’accéder aux pods DaemonSet. Cela se fait via l’adresse IP du cluster du service. Notez que cela ne garantit pas l’accès à un nœud spé­ci­fique. Au lieu de cela, le service trans­met­tra la demande à l’un des pods DaemonSet dis­po­nibles.

Vous trouverez des in­for­ma­tions dé­tail­lées sur la gestion des clusters pour les débutants dans notre tutoriel Ku­ber­netes.

Managed Ku­ber­netes de IONOS Cloud
Or­ches­trez vos charges de travail en toute sécurité

Managed Ku­ber­netes est la pla­te­forme idéale pour des ap­pli­ca­tions de con­te­neurs per­for­mantes et hautement évo­lu­tives.

Aller au menu principal