6.3. À l’aide de l’opérateur de tuning de nœud


Apprenez-en plus sur l’opérateur de réglage des nœuds et comment vous pouvez l’utiliser pour gérer l’accord au niveau des nœuds en orchestreant le démon réglé.

But

L’opérateur de réglage des nœuds vous aide à gérer le réglage au niveau des nœuds en orchestreant le démon TuneD et permet d’obtenir des performances de faible latence en utilisant le contrôleur Performance Profile. La majorité des applications de haute performance nécessitent un certain niveau de réglage du noyau. Le Node Tuning Operator fournit une interface de gestion unifiée aux utilisateurs de sysctls de niveau nœud et plus de flexibilité pour ajouter un réglage personnalisé spécifié par les besoins de l’utilisateur.

L’opérateur gère le démon TuneD conteneurisé pour Red Hat OpenShift Service sur AWS en tant qu’ensemble de démon Kubernetes. Il garantit que la spécification de réglage personnalisé est transmise à tous les démons TuneD conteneurisés fonctionnant dans le cluster dans le format que les démons comprennent. Les démons s’exécutent sur tous les nœuds de l’amas, un par nœud.

Les paramètres de niveau nœud appliqués par le démon TuneD conteneurisé sont retournés sur un événement qui déclenche un changement de profil ou lorsque le démon TuneD conteneurisé est terminé gracieusement en recevant et en manipulant un signal de terminaison.

Le Node Tuning Operator utilise le contrôleur Performance Profile pour implémenter un réglage automatique afin d’obtenir des performances de latence faibles pour Red Hat OpenShift Service sur les applications AWS.

L’administrateur du cluster configure un profil de performance pour définir les paramètres de niveau des nœuds tels que les paramètres suivants:

  • La mise à jour du noyau vers kernel-rt.
  • Choisir des processeurs pour l’entretien ménager.
  • Choisir des processeurs pour exécuter des charges de travail.

Le Node Tuning Operator fait partie d’un service standard Red Hat OpenShift sur l’installation AWS dans la version 4.1 et ultérieure.

Note

Dans les versions antérieures de Red Hat OpenShift Service sur AWS, l’opérateur Performance Addon a été utilisé pour implémenter un réglage automatique afin d’obtenir des performances de latence faibles pour les applications OpenShift. Dans Red Hat OpenShift Service sur AWS 4.11 et plus tard, cette fonctionnalité fait partie de l’opérateur de Tuning Node.

Ce processus permet d’accéder à un exemple de spécification de l’opérateur de tuning de nœud.

Procédure

  • Exécutez la commande suivante pour accéder à un exemple de spécification de l’opérateur de tuning de nœud:

    oc get tuned.tuned.openshift.io/default -o yaml -n openshift-cluster-node-tuning-operator
    Copy to Clipboard Toggle word wrap

Le CR par défaut est destiné à fournir un réglage standard au niveau des nœuds pour le service Red Hat OpenShift sur la plate-forme AWS et il ne peut être modifié que pour définir l’état de gestion de l’opérateur. Les autres modifications personnalisées apportées au CR par défaut seront annulées par l’opérateur. Créez vos propres CR Tuned pour un réglage personnalisé. Les CR nouvellement créés seront combinés avec le CR par défaut et le réglage personnalisé appliqué à Red Hat OpenShift Service sur les nœuds AWS basés sur les étiquettes de nœuds ou de pod et les priorités de profil.

Avertissement

Bien que dans certaines situations, le soutien pour les étiquettes de gousses puisse être un moyen pratique de fournir automatiquement l’accord requis, cette pratique est découragée et fortement conseillée, en particulier dans les clusters à grande échelle. Le CR par défaut Tuned CR est livré sans cod correspondant à l’étiquette. En cas de création d’un profil personnalisé avec la correspondance d’étiquettes de pod, la fonctionnalité sera activée à ce moment-là. La fonctionnalité de l’étiquette de pod sera dépréciée dans les futures versions de l’opérateur de tuning de nœud.

6.3.2. Caractéristiques d’accord personnalisé

La ressource personnalisée (CR) de l’opérateur comporte deux sections principales. La première section, profil:, est une liste de profils TuneD et de leurs noms. La seconde, recommande :, définit la logique de sélection du profil.

De multiples spécifications de réglage personnalisées peuvent coexister sous la forme de plusieurs CR dans l’espace de noms de l’opérateur. L’existence de nouveaux CR ou la suppression d’anciens CR est détectée par l’opérateur. Les spécifications de réglage personnalisées existantes sont fusionnées et les objets appropriés pour les démons TuneD conteneurisés sont mis à jour.

État de gestion

L’état de gestion de l’opérateur est défini en ajustant le CR par défaut Tuned CR. L’opérateur est par défaut dans l’état géré et le champ spec.managementState n’est pas présent dans le CR par défaut Tuned CR. Les valeurs valides pour l’état de gestion de l’opérateur sont les suivantes:

  • Géré : l’opérateur mettra à jour ses opérandes à mesure que les ressources de configuration sont mises à jour
  • Non géré : l’opérateur ignorera les modifications apportées aux ressources de configuration
  • Supprimé : l’Opérateur supprimera ses opérandes et ses ressources que l’Opérateur a fournies

Données de profil

Le profil: section répertorie les profils TuneD et leurs noms.

profile:
- name: tuned_profile_1
  data: |
    # TuneD profile specification
    [main]
    summary=Description of tuned_profile_1 profile

    [sysctl]
    net.ipv4.ip_forward=1
    # ... other sysctl's or other TuneD daemon plugins supported by the containerized TuneD

# ...

- name: tuned_profile_n
  data: |
    # TuneD profile specification
    [main]
    summary=Description of tuned_profile_n profile

    # tuned_profile_n profile settings
Copy to Clipboard Toggle word wrap

Les profils recommandés

Le profil : la logique de sélection est définie par la recommandation : section du CR. La section recommandée est une liste d’éléments pour recommander les profils en fonction de critères de sélection.

recommend:
<recommend-item-1>
# ...
<recommend-item-n>
Copy to Clipboard Toggle word wrap

Les différents éléments de la liste:

- machineConfigLabels: 
1

    <mcLabels> 
2

  match: 
3

    <match> 
4

  priority: <priority> 
5

  profile: <tuned_profile_name> 
6

  operand: 
7

    debug: <bool> 
8

    tunedConfig:
      reapply_sysctl: <bool> 
9
Copy to Clipboard Toggle word wrap
1
En option.
2
Dictionnaire des étiquettes key/value MachineConfig. Les clés doivent être uniques.
3
En cas d’omission, une correspondance de profil est supposée à moins qu’un profil ayant une priorité supérieure ne corresponde en premier ou que machineConfigLabels ne soit définie.
4
Liste facultative.
5
La priorité de la commande de profil. Les chiffres inférieurs signifient une priorité plus élevée (0 est la priorité la plus élevée).
6
A profil TuneD à appliquer sur un match. A titre d’exemple, tuned_profile_1.
7
Configuration optionnelle d’opérande.
8
Activez ou éteignez le débogage pour le démon TuneD. Les options sont vraies pour on ou false for off. La valeur par défaut est fausse.
9
Activez ou désactivez la fonctionnalité reapply_sysctl pour le démon TuneD. Les options sont vraies et fausses pour l’off.

&lt;match&gt; est une liste facultative définie de manière récursive comme suit:

- label: <label_name> 
1

  value: <label_value> 
2

  type: <label_type> 
3

    <match> 
4
Copy to Clipboard Toggle word wrap
1
Le nom de l’étiquette du nœud ou du pod.
2
La valeur optionnelle de l’étiquette du nœud ou du pod. En cas d’omission, la présence de &lt;label_name&gt; suffit pour correspondre.
3
En option type d’objet (node ou pod). En cas d’omission, le nœud est supposé.
4
Liste optionnelle &lt;match&gt;.

Lorsque &lt;match&gt; n’est pas omis, toutes les sections imbriquées &lt;match&gt; doivent également évaluer à true. Dans le cas contraire, false est supposé et le profil avec la section respective &lt;match&gt; ne sera pas appliqué ou recommandé. Ainsi, la nidification (sections enfant &lt;match&gt;) fonctionne en tant qu’opérateur logique ET. Inversement, si un élément de la liste &lt;match&gt; correspond, l’ensemble de la liste &lt;match&gt; évalue à true. La liste agit donc en tant qu’opérateur logique ou opérateur.

En cas de définition de machineConfigLabels, la correspondance basée sur le pool de configuration de machine est activée pour l’élément de liste recommandé. &lt;mcLabels&gt; spécifie les étiquettes d’une configuration de machine. La configuration de la machine est créée automatiquement pour appliquer les paramètres de l’hôte, tels que les paramètres de démarrage du noyau, pour le profil &lt;tuned_profile_name&gt;. Cela implique de trouver tous les pools de configuration de machine avec le sélecteur de configuration de machine correspondant &lt;mcLabels&gt; et de définir le profil &lt;tuned_profile_name&gt; sur tous les nœuds qui sont assignés aux pools de configuration de machine trouvés. Afin de cibler les nœuds qui ont à la fois des rôles de maître et de travailleur, vous devez utiliser le rôle maître.

Les éléments de liste correspondent et machineConfigLabels sont connectés par l’opérateur logique OU. L’élément de match est évalué d’abord en court-circuit. Donc, s’il évalue à true, l’élément machineConfigLabels n’est pas pris en compte.

Important

Lors de l’utilisation de la correspondance basée sur le pool de configuration de la machine, il est conseillé de regrouper les nœuds avec la même configuration matérielle dans le même pool de configuration de machine. Le fait de ne pas suivre cette pratique pourrait entraîner des opérandes TuneD calculant des paramètres contradictoires du noyau pour deux ou plusieurs nœuds partageant le même pool de configuration de machine.

Exemple: correspondance basée sur l’étiquette de nœud ou de pod

- match:
  - label: tuned.openshift.io/elasticsearch
    match:
    - label: node-role.kubernetes.io/master
    - label: node-role.kubernetes.io/infra
    type: pod
  priority: 10
  profile: openshift-control-plane-es
- match:
  - label: node-role.kubernetes.io/master
  - label: node-role.kubernetes.io/infra
  priority: 20
  profile: openshift-control-plane
- priority: 30
  profile: openshift-node
Copy to Clipboard Toggle word wrap

Le CR ci-dessus est traduit pour le démon TuneD conteneurisé dans son fichier recommend.conf basé sur les priorités du profil. Le profil avec la priorité la plus élevée (10) est l’avion de contrôle ouvert et, par conséquent, il est considéré en premier. Le démon TuneD conteneurisé fonctionnant sur un nœud donné semble voir s’il y a un pod fonctionnant sur le même nœud avec le set d’étiquettes tuned.openshift.io/élastique. Dans le cas contraire, l’ensemble de la section &lt;match&gt; évalue comme faux. En cas d’un tel pod avec l’étiquette, pour que la section &lt;match&gt; évalue à true, l’étiquette du nœud doit également être node-role.kubernetes.io/master ou node-role.kubernetes.io/infra.

Lorsque les étiquettes du profil avec priorité 10 correspondent, le profil openshift-control-plane-es est appliqué et aucun autre profil n’est pris en compte. Dans le cas où la combinaison d’étiquettes node/pod ne correspondait pas, le deuxième profil de priorité (openshift-control-plan) est pris en compte. Ce profil est appliqué si le pod conteneurisé TuneD fonctionne sur un nœud avec les étiquettes node-role.kubernetes.io/master ou node-role.kubernetes.io/infra.

Enfin, le nœud ouvert de profil a la priorité la plus basse de 30. Il manque la section &lt;match&gt; et, par conséquent, correspondra toujours. Il agit comme un profil catch-all pour définir le profil de nœud ouvert, s’il n’y a pas d’autre profil avec une priorité plus élevée sur un nœud donné.

Exemple: mise en correspondance basée sur le pool de configuration de machine

apiVersion: tuned.openshift.io/v1
kind: Tuned
metadata:
  name: openshift-node-custom
  namespace: openshift-cluster-node-tuning-operator
spec:
  profile:
  - data: |
      [main]
      summary=Custom OpenShift node profile with an additional kernel parameter
      include=openshift-node
      [bootloader]
      cmdline_openshift_node_custom=+skew_tick=1
    name: openshift-node-custom

  recommend:
  - machineConfigLabels:
      machineconfiguration.openshift.io/role: "worker-custom"
    priority: 20
    profile: openshift-node-custom
Copy to Clipboard Toggle word wrap

Afin de minimiser le redémarrage des nœuds, étiqueter les nœuds cibles avec une étiquette que le sélecteur de nœud du pool de configuration de la machine correspondra, puis créer le CR Tuned ci-dessus et enfin créer le pool de configuration de la machine personnalisée lui-même.

Les profils TuneD spécifiques aux fournisseurs de cloud

Grâce à cette fonctionnalité, tous les nœuds spécifiques aux fournisseurs de Cloud peuvent facilement se voir attribuer un profil TuneD spécifiquement adapté à un fournisseur de Cloud donné sur un service Red Hat OpenShift sur le cluster AWS. Cela peut être accompli sans ajouter d’étiquettes de nœuds supplémentaires ou regrouper des nœuds dans les pools de configuration de la machine.

Cette fonctionnalité tire parti des valeurs d’objet de nœud spec.providerID sous la forme de &lt;cloud-provider&gt;:///&lt;cloud-provider-specific-id&gt; et écrit le fichier /var/lib/ocp-tuned/provider avec la valeur &lt;cloud-provider&gt; dans les conteneurs d’opérande NTO. Le contenu de ce fichier est ensuite utilisé par TuneD pour charger le profil fournisseur-&lt;cloud-provider&gt; s’il existe un tel profil.

Le profil openshift que les profils openshift-contrôle-plan et openshift-node héritent des paramètres est maintenant mis à jour pour utiliser cette fonctionnalité grâce à l’utilisation du chargement de profil conditionnel. Actuellement, ni NTO ni TuneD n’incluent des profils spécifiques aux fournisseurs Cloud. Cependant, il est possible de créer un profil personnalisé fournisseur-&lt;cloud-fourr&gt; qui sera appliqué à tous les nœuds de cluster spécifiques au fournisseur Cloud.

Exemple de profil de fournisseur GCE Cloud

apiVersion: tuned.openshift.io/v1
kind: Tuned
metadata:
  name: provider-gce
  namespace: openshift-cluster-node-tuning-operator
spec:
  profile:
  - data: |
      [main]
      summary=GCE Cloud provider-specific profile
      # Your tuning for GCE Cloud provider goes here.
    name: provider-gce
Copy to Clipboard Toggle word wrap

Note

En raison de l’héritage du profil, tout paramètre spécifié dans le profil fournisseur-&lt;cloud-fourr&gt; sera écrasé par le profil openshift et ses profils enfants.

6.3.3. Des profils par défaut définis sur un cluster

Ce qui suit sont les profils par défaut définis sur un cluster.

apiVersion: tuned.openshift.io/v1
kind: Tuned
metadata:
  name: default
  namespace: openshift-cluster-node-tuning-operator
spec:
  profile:
  - data: |
      [main]
      summary=Optimize systems running OpenShift (provider specific parent profile)
      include=-provider-${f:exec:cat:/var/lib/ocp-tuned/provider},openshift
    name: openshift
  recommend:
  - profile: openshift-control-plane
    priority: 30
    match:
    - label: node-role.kubernetes.io/master
    - label: node-role.kubernetes.io/infra
  - profile: openshift-node
    priority: 40
Copy to Clipboard Toggle word wrap

À partir de Red Hat OpenShift Service sur AWS 4.9, tous les profils OpenShift TuneD sont livrés avec le package TuneD. La commande oc exec permet d’afficher le contenu de ces profils:

$ oc exec $tuned_pod -n openshift-cluster-node-tuning-operator -- find /usr/lib/tuned/openshift{,-control-plane,-node} -name tuned.conf -exec grep -H ^ {} \;
Copy to Clipboard Toggle word wrap

6.3.4. Les plugins TuneD daemon pris en charge

À l’exclusion de la section [principale], les plugins TuneD suivants sont pris en charge lors de l’utilisation de profils personnalisés définis dans le profil : section du CR Tuned:

  • audio
  • CPU
  • disque de disque
  • eeepc_she
  • les modules
  • les montures
  • le net
  • échéancier
  • à propos de scsi_host
  • à propos de SELinux
  • le sysctl
  • les sysfs
  • USB
  • la vidéo
  • à propos de VM
  • chargeur de démarrage

Il existe une fonctionnalité de réglage dynamique fournie par certains de ces plugins qui n’est pas pris en charge. Les plugins TuneD suivants ne sont actuellement pas pris en charge:

  • le script
  • d’un système
Note

Le plugin de démarrage TuneD ne prend en charge que les nœuds de travail Red Hat Enterprise Linux CoreOS (RHCOS).

Ressources supplémentaires

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