5.5. Ordonnancement des charges de travail avec l'ordonnanceur NUMA-aware


Vous pouvez planifier des charges de travail avec le planificateur NUMA-aware à l'aide de Deployment CR qui spécifient les ressources minimales requises pour traiter la charge de travail.

L'exemple de déploiement suivant utilise l'ordonnancement NUMA-aware pour un exemple de charge de travail.

Conditions préalables

  • Installez le CLI OpenShift (oc).
  • Connectez-vous en tant qu'utilisateur disposant des privilèges cluster-admin.
  • Installez l'opérateur de ressources NUMA et déployez l'ordonnanceur secondaire compatible NUMA.

Procédure

  1. Obtenez le nom de l'ordonnanceur NUMA-aware déployé dans le cluster en exécutant la commande suivante :

    $ oc get numaresourcesschedulers.nodetopology.openshift.io numaresourcesscheduler -o json | jq '.status.schedulerName'

    Exemple de sortie

    topo-aware-scheduler

  2. Créez un CR Deployment qui utilise l'ordonnanceur nommé topo-aware-scheduler, par exemple :

    1. Enregistrez le YAML suivant dans le fichier nro-deployment.yaml:

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: numa-deployment-1
        namespace: openshift-numaresources
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: test
        template:
          metadata:
            labels:
              app: test
          spec:
            schedulerName: topo-aware-scheduler 
      1
      
            containers:
            - name: ctnr
              image: quay.io/openshifttest/hello-openshift:openshift
              imagePullPolicy: IfNotPresent
              resources:
                limits:
                  memory: "100Mi"
                  cpu: "10"
                requests:
                  memory: "100Mi"
                  cpu: "10"
            - name: ctnr2
              image: gcr.io/google_containers/pause-amd64:3.0
              imagePullPolicy: IfNotPresent
              command: ["/bin/sh", "-c"]
              args: [ "while true; do sleep 1h; done;" ]
              resources:
                limits:
                  memory: "100Mi"
                  cpu: "8"
                requests:
                  memory: "100Mi"
                  cpu: "8"
      1
      schedulerName doit correspondre au nom de l'ordonnanceur NUMA-aware déployé dans votre cluster, par exemple topo-aware-scheduler.
    2. Créez le CR Deployment en exécutant la commande suivante :

      $ oc create -f nro-deployment.yaml

Vérification

  1. Vérifiez que le déploiement s'est déroulé correctement :

    $ oc get pods -n openshift-numaresources

    Exemple de sortie

    NAME                                                READY   STATUS    RESTARTS   AGE
    numa-deployment-1-56954b7b46-pfgw8                  2/2     Running   0          129m
    numaresources-controller-manager-7575848485-bns4s   1/1     Running   0          15h
    numaresourcesoperator-worker-dvj4n                  2/2     Running   0          18h
    numaresourcesoperator-worker-lcg4t                  2/2     Running   0          16h
    secondary-scheduler-56994cf6cf-7qf4q                1/1     Running   0          18h

  2. Vérifiez que le site topo-aware-scheduler planifie le pod déployé en exécutant la commande suivante :

    $ oc describe pod numa-deployment-1-56954b7b46-pfgw8 -n openshift-numaresources

    Exemple de sortie

    Events:
      Type    Reason          Age   From                  Message
      ----    ------          ----  ----                  -------
      Normal  Scheduled       130m  topo-aware-scheduler  Successfully assigned openshift-numaresources/numa-deployment-1-56954b7b46-pfgw8 to compute-0.example.com

    Note

    Les déploiements qui demandent plus de ressources qu'il n'y en a de disponibles pour la planification échoueront avec une erreur MinimumReplicasUnavailable. Le déploiement réussit lorsque les ressources requises sont disponibles. Les pods restent dans l'état Pending jusqu'à ce que les ressources nécessaires soient disponibles.

  3. Vérifiez que les ressources allouées prévues sont répertoriées pour le nœud. Exécutez la commande suivante :

    $ oc describe noderesourcetopologies.topology.node.k8s.io

    Exemple de sortie

    ...
    
    Zones:
      Costs:
        Name:   node-0
        Value:  10
        Name:   node-1
        Value:  21
      Name:     node-0
      Resources:
        Allocatable:  39
        Available:    21 
    1
    
        Capacity:     40
        Name:         cpu
        Allocatable:  6442450944
        Available:    6442450944
        Capacity:     6442450944
        Name:         hugepages-1Gi
        Allocatable:  134217728
        Available:    134217728
        Capacity:     134217728
        Name:         hugepages-2Mi
        Allocatable:  262415904768
        Available:    262206189568
        Capacity:     270146007040
        Name:         memory
      Type:           Node

    1
    La capacité de Available est réduite en raison des ressources qui ont été allouées au pod garanti.

    Les ressources consommées par les pods garantis sont soustraites des ressources de nœuds disponibles répertoriées sous noderesourcetopologies.topology.node.k8s.io.

  4. Les allocations de ressources pour les modules ayant une qualité de service Best-effort ou Burstable (qosClass) ne sont pas reflétées dans les ressources des nœuds NUMA sous noderesourcetopologies.topology.node.k8s.io. Si les ressources consommées par un pod ne sont pas prises en compte dans le calcul des ressources du nœud, vérifiez que le pod a qosClass de Guaranteed en exécutant la commande suivante :

    $ oc get pod <pod_name> -n <pod_namespace> -o jsonpath="{ .status.qosClass }"

    Exemple de sortie

    Guaranteed

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

© 2026 Red Hat
Retour au début