Chapitre 5. À l’aide d’emplois et de jeux de démons


En tant qu’administrateur, vous pouvez créer et utiliser des ensembles de démons pour exécuter des répliques d’un pod sur des nœuds spécifiques ou tous les nœuds d’un Red Hat OpenShift Service sur le cluster AWS.

Le jeu de démon garantit que tous les nœuds (ou certains) exécutent une copie d’un pod. Comme les nœuds sont ajoutés au cluster, des pods sont ajoutés au cluster. Comme les nœuds sont retirés de l’amas, ces gousses sont enlevées par collecte des ordures. La suppression d’un jeu de démons nettoiera les gousses qu’il a créées.

Il est possible d’utiliser des ensembles de démons pour créer un stockage partagé, exécuter un pod de journalisation sur tous les nœuds de votre cluster ou déployer un agent de surveillance sur chaque nœud.

Les administrateurs de cluster et les administrateurs de projet peuvent pour des raisons de sécurité créer des ensembles de démons.

Consultez la documentation Kubernetes pour plus d’informations sur les ensembles de démons.

Important

La programmation du jeu de démon est incompatible avec le sélecteur de nœud par défaut du projet. Lorsque vous ne le désactivez pas, le jeu de démon est limité en fusionnant avec le sélecteur de nœud par défaut. Il en résulte une recréation fréquente de la gousse sur les nœuds qui n’ont pas été sélectionnés par le sélecteur de nœud fusionné, ce qui à son tour met une charge indésirable sur le cluster.

5.1.1. Programmé par défaut de planification

L’ensemble de démons garantit que tous les nœuds éligibles exécutent une copie d’un pod. Habituellement, le nœud sur lequel un pod fonctionne est sélectionné par le planificateur Kubernetes. Cependant, les gousses de jeu de démon sont créées et programmées par le contrôleur de jeu de démon. Cela pose les questions suivantes:

  • Comportement des gousses incohérentes: Les gousses normales qui attendent d’être programmées sont créées et dans l’état en attente, mais les gousses de jeu de démons ne sont pas créées dans l’état en attente. C’est déroutant pour l’utilisateur.
  • La préemption de Pod est gérée par le programmeur par défaut. Lorsque la préemption est activée, le contrôleur de jeu de démon prendra des décisions de planification sans tenir compte de la priorité et de la préemption des pod.

La fonction ScheduleDaemonSetPods, activée par défaut dans Red Hat OpenShift Service sur AWS, vous permet de programmer les jeux de démons en utilisant le programmateur par défaut au lieu du contrôleur de jeu de démon, en ajoutant le terme NodeAffinity aux pods de jeu de démons, au lieu du terme spec.nodeName. Le planificateur par défaut est ensuite utilisé pour lier le pod à l’hôte cible. Lorsque l’affinité des nœuds de la gousse de démon existe déjà, elle est remplacée. Le contrôleur de jeu de démon effectue uniquement ces opérations lors de la création ou de la modification de gousses de jeu de démons, et aucune modification n’est apportée à la spéc.template de l’ensemble de démon.

kind: Pod
apiVersion: v1
metadata:
  name: hello-node-6fbccf8d9-9tmzr
#...
spec:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchFields:
        - key: metadata.name
          operator: In
          values:
          - target-host-name
#...
Copy to Clipboard Toggle word wrap

De plus, un node.kubernetes.io/unschedulable:NoSchedule tolérance est ajouté automatiquement aux pods de daemon. Le programmeur par défaut ignore les nœuds imprévus lors de la planification des gousses de jeu de démons.

5.1.2. Créer des démons

Lors de la création de jeux de démons, le champ nodeSelector est utilisé pour indiquer les nœuds sur lesquels le jeu de démon devrait déployer des répliques.

Conditions préalables

  • Avant de commencer à utiliser les jeux de démons, désactivez le sélecteur de nœuds par défaut dans votre espace de noms, en définissant l’annotation openshift.io/node-selector de l’espace de noms sur une chaîne vide:

    $ oc patch namespace myproject -p \
        '{"metadata": {"annotations": {"openshift.io/node-selector": ""}}}'
    Copy to Clipboard Toggle word wrap
    Astuce

    Alternativement, vous pouvez appliquer le YAML suivant pour désactiver le sélecteur de nœud par défaut à l’échelle du projet pour un espace de noms:

    apiVersion: v1
    kind: Namespace
    metadata:
      name: <namespace>
      annotations:
        openshift.io/node-selector: ''
    #...
    Copy to Clipboard Toggle word wrap

Procédure

Créer un jeu de démon:

  1. Définir le fichier daemon set yaml:

    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: hello-daemonset
    spec:
      selector:
          matchLabels:
            name: hello-daemonset 
    1
    
      template:
        metadata:
          labels:
            name: hello-daemonset 
    2
    
        spec:
          nodeSelector: 
    3
    
            role: worker
          containers:
          - image: openshift/hello-openshift
            imagePullPolicy: Always
            name: registry
            ports:
            - containerPort: 80
              protocol: TCP
            resources: {}
            terminationMessagePath: /dev/termination-log
          serviceAccount: default
          terminationGracePeriodSeconds: 10
    #...
    Copy to Clipboard Toggle word wrap
    1
    Le sélecteur d’étiquette qui détermine quels pods appartiennent à l’ensemble de démons.
    2
    Le sélecteur d’étiquette du modèle de pod. Doit correspondre au sélecteur d’étiquette ci-dessus.
    3
    Le sélecteur de nœuds qui détermine sur quels nœuds les répliques de pod doivent être déployés. L’étiquette correspondante doit être présente sur le nœud.
  2. Créer l’objet de jeu de démon:

    $ oc create -f daemonset.yaml
    Copy to Clipboard Toggle word wrap
  3. Afin de vérifier que les gousses ont été créées, et que chaque nœud a une réplique de pod:

    1. Découvrez les gousses de daemonset:

      $ oc get pods
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      hello-daemonset-cx6md   1/1       Running   0          2m
      hello-daemonset-e3md9   1/1       Running   0          2m
      Copy to Clipboard Toggle word wrap

    2. Afficher les gousses pour vérifier que la gousse a été placée sur le nœud:

      $ oc describe pod/hello-daemonset-cx6md|grep Node
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      Node:        openshift-node01.hostname.com/10.14.20.134
      Copy to Clipboard Toggle word wrap

      $ oc describe pod/hello-daemonset-e3md9|grep Node
      Copy to Clipboard Toggle word wrap

      Exemple de sortie

      Node:        openshift-node02.hostname.com/10.14.20.137
      Copy to Clipboard Toggle word wrap

Important
  • En cas de mise à jour d’un modèle de pod daemon, les répliques de pod existantes ne sont pas affectées.
  • Lorsque vous supprimez un jeu de démons, puis créez un nouveau jeu de démons avec un modèle différent mais le même sélecteur d’étiquettes, il reconnaît que les répliques de gousses existantes ont des étiquettes correspondantes et ne les met pas à jour ou ne crée pas de nouvelles répliques malgré une inadéquation dans le modèle de pod.
  • Lorsque vous changez d’étiquettes de nœuds, le jeu de démons ajoute des pods aux nœuds qui correspondent aux nouvelles étiquettes et supprime les pods des nœuds qui ne correspondent pas aux nouvelles étiquettes.

Afin de mettre à jour un jeu de démons, forcez de nouvelles répliques de gousses à être créées en supprimant les anciennes répliques ou nœuds.

Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat