5.3. Gestion des nœuds
OpenShift Container Platform utilise une ressource personnalisée KubeletConfig (CR) pour gérer la configuration des nœuds. En créant une instance d'un objet KubeletConfig
, une configuration de machine gérée est créée pour remplacer les paramètres du nœud.
Logging in to remote machines for the purpose of changing their configuration is not supported.
5.3.1. Modification des nœuds Copier lienLien copié sur presse-papiers!
Pour apporter des modifications à la configuration d'un cluster ou d'un pool de machines, vous devez créer une définition de ressource personnalisée (CRD) ou un objet kubeletConfig
. OpenShift Container Platform utilise le Machine Config Controller pour surveiller les changements introduits par le CRD afin d'appliquer les changements au cluster.
Comme les champs d'un objet kubeletConfig
sont transmis directement au kubelet par Kubernetes en amont, la validation de ces champs est gérée directement par le kubelet lui-même. Veuillez vous référer à la documentation Kubernetes pertinente pour connaître les valeurs valides de ces champs. Des valeurs invalides dans l'objet kubeletConfig
peuvent rendre les nœuds de cluster inutilisables.
Procédure
Obtenez l'étiquette associée au CRD statique, Machine Config Pool, pour le type de nœud que vous souhaitez configurer. Effectuez l'une des étapes suivantes :
Vérifier les étiquettes actuelles du pool de configuration de la machine souhaitée.
Par exemple :
oc get machineconfigpool --show-labels
$ oc get machineconfigpool --show-labels
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME CONFIG UPDATED UPDATING DEGRADED LABELS master rendered-master-e05b81f5ca4db1d249a1bf32f9ec24fd True False False operator.machineconfiguration.openshift.io/required-for-upgrade= worker rendered-worker-f50e78e1bc06d8e82327763145bfcf62 True False False
NAME CONFIG UPDATED UPDATING DEGRADED LABELS master rendered-master-e05b81f5ca4db1d249a1bf32f9ec24fd True False False operator.machineconfiguration.openshift.io/required-for-upgrade= worker rendered-worker-f50e78e1bc06d8e82327763145bfcf62 True False False
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ajoutez une étiquette personnalisée au pool de configuration de la machine souhaitée.
Par exemple :
oc label machineconfigpool worker custom-kubelet=enabled
$ oc label machineconfigpool worker custom-kubelet=enabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Créez une ressource personnalisée (CR)
kubeletconfig
pour votre changement de configuration.Par exemple :
Exemple de configuration pour un CR custom-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer l'objet CR.
oc create -f <nom-de-fichier>
$ oc create -f <nom-de-fichier>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Par exemple :
oc create -f master-kube-config.yaml
$ oc create -f master-kube-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
La plupart des options de configuration de Kubelet peuvent être définies par l'utilisateur. Les options suivantes ne peuvent pas être écrasées :
- CgroupDriver
- ClusterDNS
- Domaine de regroupement
- StaticPodPath
Si un seul nœud contient plus de 50 images, la planification des pods peut être déséquilibrée entre les nœuds. En effet, la liste des images sur un nœud est réduite à 50 par défaut. Vous pouvez désactiver la limite d'images en modifiant l'objet KubeletConfig
et en définissant la valeur de nodeStatusMaxImages
à -1
.
5.3.2. Configuration des nœuds du plan de contrôle comme planifiables Copier lienLien copié sur presse-papiers!
Vous pouvez configurer les nœuds du plan de contrôle pour qu'ils soient programmables, ce qui signifie que les nouveaux pods sont autorisés à être placés sur les nœuds maîtres. Par défaut, les nœuds du plan de contrôle ne sont pas programmables.
Vous pouvez faire en sorte que les maîtres soient programmables, mais vous devez conserver les nœuds de travail.
Vous pouvez déployer OpenShift Container Platform sans nœuds de travail sur un cluster bare metal. Dans ce cas, les nœuds du plan de contrôle sont marqués comme planifiables par défaut.
Vous pouvez autoriser ou non les nœuds du plan de contrôle à être planifiables en configurant le champ mastersSchedulable
.
Lorsque vous configurez les nœuds du plan de contrôle pour qu'ils soient planifiables au lieu d'être non planifiables par défaut, des abonnements supplémentaires sont nécessaires. En effet, les nœuds du plan de contrôle deviennent alors des nœuds de travail.
Procédure
Modifier la ressource
schedulers.config.openshift.io
.oc edit schedulers.config.openshift.io cluster
$ oc edit schedulers.config.openshift.io cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Configurez le champ
mastersSchedulable
.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- La valeur
true
permet aux nœuds du plan de contrôle d'être programmables ou la valeurfalse
interdit aux nœuds du plan de contrôle d'être programmables.
- Enregistrez le fichier pour appliquer les modifications.
5.3.3. Définition des booléens SELinux Copier lienLien copié sur presse-papiers!
OpenShift Container Platform vous permet d'activer et de désactiver un booléen SELinux sur un nœud Red Hat Enterprise Linux CoreOS (RHCOS). La procédure suivante explique comment modifier les booléens SELinux sur les nœuds à l'aide de l'opérateur de configuration de machine (MCO). Cette procédure utilise container_manage_cgroup
comme exemple de booléen. Vous pouvez modifier cette valeur pour obtenir le booléen dont vous avez besoin.
Conditions préalables
- Vous avez installé le CLI OpenShift (oc).
Procédure
Créez un nouveau fichier YAML avec un objet
MachineConfig
, comme dans l'exemple suivant :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez le nouvel objet
MachineConfig
en exécutant la commande suivante :oc create -f 99-worker-setsebool.yaml
$ oc create -f 99-worker-setsebool.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
L'application de toute modification à l'objet MachineConfig
entraîne un redémarrage en douceur de tous les nœuds concernés après l'application de la modification.
5.3.4. Ajout d'arguments de noyau aux nœuds Copier lienLien copié sur presse-papiers!
Dans certains cas particuliers, vous pouvez ajouter des arguments de noyau à un ensemble de nœuds de votre cluster. Cela ne doit être fait qu'avec prudence et en comprenant bien les implications des arguments que vous définissez.
Une mauvaise utilisation des arguments du noyau peut rendre vos systèmes non amorçables.
Voici quelques exemples d'arguments de noyau que vous pouvez définir :
- enforcing=0: Configure Security Enhanced Linux (SELinux) pour qu'il fonctionne en mode permissif. En mode permissif, le système agit comme si SELinux appliquait la politique de sécurité chargée, notamment en étiquetant les objets et en émettant des entrées de refus d'accès dans les journaux, mais il ne refuse en fait aucune opération. Bien qu'il ne soit pas pris en charge par les systèmes de production, le mode permissif peut s'avérer utile pour le débogage.
-
nosmt: Désactive le multithreading symétrique (SMT) dans le noyau. Le multithreading permet d'avoir plusieurs threads logiques pour chaque unité centrale. Vous pouvez envisager d'utiliser
nosmt
dans les environnements multi-locataires afin de réduire les risques d'attaques croisées. En désactivant le SMT, vous choisissez essentiellement la sécurité au détriment des performances. systemd.unified_cgroup_hierarchy: Active le groupe de contrôle Linux version 2 (cgroup v2). cgroup v2 est la prochaine version du groupe de contrôle du noyau et offre de nombreuses améliorations.
ImportantOpenShift Container Platform cgroups version 2 support is a Technology Preview feature only. Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process.
Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.
Voir Kernel.org kernel parameters pour une liste et une description des arguments du noyau.
Dans la procédure suivante, vous créez un objet MachineConfig
qui identifie :
- Ensemble de machines auxquelles vous souhaitez ajouter l'argument du noyau. Dans ce cas, il s'agit des machines ayant un rôle de travailleur.
- Arguments du noyau qui sont ajoutés à la fin des arguments du noyau existants.
- Une étiquette qui indique à quel endroit de la liste des configurations de machines la modification est appliquée.
Conditions préalables
- Disposer de privilèges administratifs sur un cluster OpenShift Container Platform opérationnel.
Procédure
Listez les objets
MachineConfig
existants pour votre cluster OpenShift Container Platform afin de déterminer comment étiqueter votre machine config :oc get MachineConfig
$ oc get MachineConfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer un fichier objet
MachineConfig
qui identifie l'argument du noyau (par exemple,05-worker-kernelarg-selinuxpermissive.yaml
)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer la nouvelle configuration de la machine :
oc create -f 05-worker-kernelarg-selinuxpermissive.yaml
$ oc create -f 05-worker-kernelarg-selinuxpermissive.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez les configurations de la machine pour voir si le nouveau a été ajouté :
oc get MachineConfig
$ oc get MachineConfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifier les nœuds :
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous pouvez voir que la planification sur chaque nœud de travailleur est désactivée pendant que la modification est appliquée.
Vérifiez que l'argument du noyau a fonctionné en vous rendant sur l'un des nœuds de travail et en listant les arguments de la ligne de commande du noyau (dans
/proc/cmdline
sur l'hôte) :oc debug node/ip-10-0-141-105.ec2.internal
$ oc debug node/ip-10-0-141-105.ec2.internal
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous devriez voir l'argument
enforcing=0
ajouté aux autres arguments du noyau.
5.3.5. Activation de l'utilisation de la mémoire d'échange sur les nœuds Copier lienLien copié sur presse-papiers!
L'activation de l'utilisation de la mémoire d'échange sur les nœuds est une fonctionnalité d'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas leur utilisation en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir un retour d'information pendant le processus de développement.
Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.
Vous pouvez activer l'utilisation de la mémoire d'échange pour les charges de travail d'OpenShift Container Platform sur une base par nœud.
L'activation de la mémoire d'échange peut avoir un impact négatif sur les performances de la charge de travail et sur la gestion des ressources manquantes. N'activez pas la mémoire d'échange sur les nœuds du plan de contrôle.
Pour activer la mémoire tampon, créez une ressource personnalisée (CR) kubeletconfig
afin de définir le paramètre swapbehavior
. Vous pouvez définir une mémoire d'échange limitée ou illimitée :
Limité : Utilisez la valeur
LimitedSwap
pour limiter la quantité de mémoire d'échange que les charges de travail peuvent utiliser. Toutes les charges de travail sur le nœud qui ne sont pas gérées par OpenShift Container Platform peuvent toujours utiliser la mémoire d'échange. Le comportement deLimitedSwap
dépend de l'exécution du nœud avec les groupes de contrôle Linux version 1 (cgroups v1) ou version 2 (cgroup v2):- cgroup v1 : Les charges de travail d'OpenShift Container Platform peuvent utiliser n'importe quelle combinaison de mémoire et de swap, jusqu'à la limite de mémoire du pod, si elle est définie.
- cgroup v2 : Les charges de travail d'OpenShift Container Platform ne peuvent pas utiliser de mémoire d'échange.
-
Illimité : Utilisez la valeur
UnlimitedSwap
pour permettre aux charges de travail d'utiliser autant de mémoire d'échange qu'elles le souhaitent, jusqu'à la limite du système.
Comme le kubelet ne démarrera pas en présence de mémoire d'échange sans cette configuration, vous devez activer la mémoire d'échange dans OpenShift Container Platform avant d'activer la mémoire d'échange sur les nœuds. S'il n'y a pas de mémoire d'échange sur un nœud, l'activation de la mémoire d'échange dans OpenShift Container Platform n'a aucun effet.
Conditions préalables
- Vous disposez d'un cluster OpenShift Container Platform en cours d'exécution qui utilise la version 4.10 ou une version ultérieure.
- You are logged in to the cluster as a user with administrative privileges.
Vous avez activé le jeu de fonctionnalités
TechPreviewNoUpgrade
sur le cluster (voir NodesWorking with clusters Enabling features using feature gates). NoteL'activation de l'ensemble de fonctionnalités
TechPreviewNoUpgrade
ne peut être annulée et empêche les mises à jour mineures de la version. Ces jeux de fonctionnalités ne sont pas recommandés sur les clusters de production.-
Si le cgroup v2 est activé sur un nœud, vous devez activer la comptabilité de swap sur le nœud, en définissant l'argument du noyau
swapaccount=1
.
Procédure
Appliquez une étiquette personnalisée au pool de configuration de la machine dans lequel vous souhaitez autoriser la mémoire d'échange.
oc label machineconfigpool worker kubelet-swap=enabled
$ oc label machineconfigpool worker kubelet-swap=enabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer une ressource personnalisée (CR) pour activer et configurer les paramètres d'échange.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Activer la mémoire tampon sur les machines.
5.3.6. Migration des nœuds du plan de contrôle d'un hôte RHOSP à un autre Copier lienLien copié sur presse-papiers!
Vous pouvez exécuter un script qui déplace un nœud de plan de contrôle d'un nœud Red Hat OpenStack Platform (RHOSP) à un autre.
Conditions préalables
-
La variable d'environnement
OS_CLOUD
fait référence à une entréeclouds
qui contient des informations d'identification administratives dans un fichierclouds.yaml
. -
La variable d'environnement
KUBECONFIG
fait référence à une configuration qui contient les identifiants administratifs de OpenShift Container Platform.
Procédure
- À partir d'une ligne de commande, exécutez le script suivant :
Si le script aboutit, la machine du plan de contrôle est migrée vers un nouveau nœud RHOSP.