3.5. Spécification de réglage personnalisé
La ressource personnalisée (CR) de l'opérateur comporte deux sections principales. La première section, profile:
, est une liste de profils TuneD et de leurs noms. La seconde, recommend:
, définit la logique de sélection des profils.
Plusieurs spécifications de réglage personnalisées peuvent coexister en tant que CR multiples 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. Toutes 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.
Management state
L'état de gestion de l'opérateur est défini en ajustant le CR accordé par défaut. Par défaut, l'opérateur est en état de gestion et le champ spec.managementState
n'est pas présent dans le CR accordé par défaut. Les valeurs valides pour l'état de gestion de l'opérateur sont les suivantes :
- Géré : l'opérateur met à jour ses opérandes au fur et à mesure que les ressources de configuration sont mises à jour
- Non géré : l'opérateur ignore les changements apportés aux ressources de configuration
- Retiré : l'opérateur retire ses opérandes et les ressources qu'il a fournies
Profile data
La section profile:
dresse la liste des profils TuneD et de leurs noms.
Recommended profiles
La logique de sélection de profile:
est définie par la section recommend:
du CR. La section recommend:
est une liste d'éléments permettant de recommander les profils sur la base d'un critère 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
- Un dictionnaire d'étiquettes clé/valeur
MachineConfig
. Les clés doivent être uniques. - 3
- En cas d'omission, la correspondance des profils est présumée, sauf si un profil ayant une priorité plus élevée correspond en premier ou si
machineConfigLabels
est défini. - 4
- Une liste facultative.
- 5
- Ordre de priorité des profils. Les chiffres les plus bas signifient une priorité plus élevée (
0
est la priorité la plus élevée). - 6
- Un profil TuneD à appliquer sur un match. Par exemple
tuned_profile_1
. - 7
- Configuration facultative de l'opérande.
- 8
- Active ou désactive le débogage du démon TuneD. Les options sont
true
pour on oufalse
pour off. La valeur par défaut estfalse
. - 9
- Active ou désactive la fonctionnalité
reapply_sysctl
pour le démon TuneD. Les options sonttrue
pour on etfalse
pour off.
<match>
est une liste optionnelle définie récursivement comme suit :
- label: <label_name> value: <label_value> type: <label_type> <match>
- label: <label_name>
value: <label_value>
type: <label_type>
<match>
- 1
- Nom de l'étiquette du nœud ou du pod.
- 2
- Valeur facultative de l'étiquette du nœud ou du pod. Si elle est omise, la présence de
<label_name>
suffit à établir une correspondance. - 3
- Type d'objet facultatif (
node
oupod
). En cas d'omission,node
est considéré comme tel. - 4
- Une liste facultative
<match>
.
Si <match>
n'est pas omis, toutes les sections imbriquées <match>
doivent également être évaluées à true
. Sinon, false
est supposé et le profil avec la section <match>
correspondante ne sera pas appliqué ou recommandé. Par conséquent, l'imbrication (sections <match>
enfant) fonctionne comme un opérateur logique ET. Inversement, si un élément de la liste <match>
correspond, toute la liste <match>
est évaluée à true
. La liste agit donc comme un opérateur logique OU.
Si machineConfigLabels
est défini, la correspondance basée sur le pool de configuration de la machine est activée pour l'élément de liste recommend:
donné. <mcLabels>
spécifie les étiquettes d'une configuration de la 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>
. Il s'agit de trouver tous les pools de configuration de machine dont le sélecteur de configuration de machine correspond à <mcLabels>
et de définir le profil <tuned_profile_name>
sur tous les nœuds auxquels sont attribués les pools de configuration de machine trouvés. Pour cibler les nœuds qui ont à la fois un rôle de maître et de travailleur, vous devez utiliser le rôle de maître.
Les éléments de la liste match
et machineConfigLabels
sont reliés par l'opérateur logique OR. L'élément match
est évalué en premier, en court-circuit. Par conséquent, s'il est évalué à 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 machine, il est conseillé de regrouper les nœuds ayant la même configuration matérielle dans le même pool de configuration machine. Si cette pratique n'est pas respectée, les opérandes TuneD peuvent calculer des paramètres de noyau contradictoires pour deux nœuds ou plus partageant le même pool de configuration de machine.
Exemple : correspondance basée sur l'étiquette d'un nœud ou d'un pod
Le CR ci-dessus est traduit pour le démon TuneD conteneurisé dans son fichier recommend.conf
en fonction des priorités du profil. Le profil ayant la priorité la plus élevée (10
) est openshift-control-plane-es
et, par conséquent, il est considéré en premier. Le démon TuneD conteneurisé fonctionnant sur un nœud donné vérifie s'il existe un pod fonctionnant sur le même nœud avec l'étiquette tuned.openshift.io/elasticsearch
définie. Si ce n'est pas le cas, toute la section <match>
est évaluée comme false
. S'il existe un pod avec le label, pour que la section <match>
soit évaluée comme true
, le label du nœud doit également être node-role.kubernetes.io/master
ou node-role.kubernetes.io/infra
.
Si les étiquettes du profil ayant la priorité 10
correspondent, le profil openshift-control-plane-es
est appliqué et aucun autre profil n'est pris en considération. Si la combinaison d'étiquettes nœud/pod ne correspond pas, le deuxième profil le plus prioritaire (openshift-control-plane
) est pris en compte. Ce profil est appliqué si le pod TuneD conteneurisé fonctionne sur un nœud avec les étiquettes node-role.kubernetes.io/master
ou node-role.kubernetes.io/infra
.
Enfin, le profil openshift-node
a la priorité la plus basse de 30
. Il ne contient pas la section <match>
et, par conséquent, correspondra toujours. Il sert de profil fourre-tout pour définir le profil openshift-node
si aucun autre profil ayant une priorité plus élevée ne correspond à un nœud donné.
Exemple : correspondance basée sur le pool de configuration de la machine
Pour minimiser les redémarrages de nœuds, il faut étiqueter les nœuds cibles avec une étiquette que le sélecteur de nœuds du pool de configuration de la machine fera correspondre, puis créer le Tuned CR ci-dessus et enfin créer le pool de configuration de la machine personnalisé lui-même.
Cloud provider-specific TuneD profiles
Avec cette fonctionnalité, tous les nœuds spécifiques à un fournisseur de Cloud peuvent commodément se voir attribuer un profil TuneD spécifiquement adapté à un fournisseur de Cloud donné sur un cluster OpenShift Container Platform. Cela peut être accompli sans ajouter d'étiquettes de nœuds supplémentaires ou regrouper les nœuds dans des pools de configuration de machines.
Cette fonctionnalité tire parti des valeurs de l'objet de nœud spec.providerID
sous la forme de <cloud-provider>://<cloud-provider-specific-id>
et écrit le fichier /var/lib/tuned/provider
avec la valeur <cloud-provider>
dans les conteneurs d'opérandes NTO. Le contenu de ce fichier est ensuite utilisé par TuneD pour charger le profil provider-<cloud-provider>
s'il existe.
Le profil openshift
dont les profils openshift-control-plane
et openshift-node
héritent des paramètres est maintenant mis à jour pour utiliser cette fonctionnalité grâce à l'utilisation du chargement conditionnel de profil. Ni NTO ni TuneD ne fournissent actuellement de profils spécifiques aux fournisseurs de Cloud. Cependant, il est possible de créer un profil personnalisé provider-<cloud-provider>
qui sera appliqué à tous les nœuds de cluster spécifiques au fournisseur de cloud.
Exemple de profil de fournisseur GCE Cloud
En raison de l'héritage des profils, tout paramètre spécifié dans le profil provider-<cloud-provider>
sera remplacé par le profil openshift
et ses profils enfants.