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.
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.
6.3.1. Accéder à un exemple Spécification de Tuning de Node Operator Copier lienLien copié sur presse-papiers!
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
oc get tuned.tuned.openshift.io/default -o yaml -n openshift-cluster-node-tuning-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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.
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é Copier lienLien copié sur presse-papiers!
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.
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>
recommend:
<recommend-item-1>
# ...
<recommend-item-n>
Les différents éléments de la liste:
- 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.
<match> est une liste facultative définie de manière récursive comme suit:
- label: <label_name> value: <label_value> type: <label_type> <match>
- label: <label_name>
value: <label_value>
type: <label_type>
<match>
Lorsque <match> n’est pas omis, toutes les sections imbriquées <match> doivent également évaluer à true. Dans le cas contraire, false est supposé et le profil avec la section respective <match> ne sera pas appliqué ou recommandé. Ainsi, la nidification (sections enfant <match>) fonctionne en tant qu’opérateur logique ET. Inversement, si un élément de la liste <match> correspond, l’ensemble de la liste <match> é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é. <mcLabels> 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 <tuned_profile_name>. Cela implique de trouver tous les pools de configuration de machine avec le sélecteur de configuration de machine correspondant <mcLabels> et de définir le profil <tuned_profile_name> 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.
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
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 <match> évalue comme faux. En cas d’un tel pod avec l’étiquette, pour que la section <match> é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 <match> 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
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 <cloud-provider>:///<cloud-provider-specific-id> et écrit le fichier /var/lib/ocp-tuned/provider avec la valeur <cloud-provider> dans les conteneurs d’opérande NTO. Le contenu de ce fichier est ensuite utilisé par TuneD pour charger le profil fournisseur-<cloud-provider> 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-<cloud-fourr> qui sera appliqué à tous les nœuds de cluster spécifiques au fournisseur Cloud.
Exemple de profil de fournisseur GCE Cloud
En raison de l’héritage du profil, tout paramètre spécifié dans le profil fournisseur-<cloud-fourr> sera écrasé par le profil openshift et ses profils enfants.
6.3.3. Des profils par défaut définis sur un cluster Copier lienLien copié sur presse-papiers!
Ce qui suit sont les profils par défaut définis sur un cluster.
À 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 ^ {} \;
$ oc exec $tuned_pod -n openshift-cluster-node-tuning-operator -- find /usr/lib/tuned/openshift{,-control-plane,-node} -name tuned.conf -exec grep -H ^ {} \;
6.3.4. Les plugins TuneD daemon pris en charge Copier lienLien copié sur presse-papiers!
À 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
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