21.12. Extension des clusters OpenShift à nœud unique avec GitOps ZTP
Vous pouvez étendre les clusters OpenShift à nœud unique avec GitOps ZTP. Lorsque vous ajoutez des nœuds de travail aux clusters OpenShift à nœud unique, le cluster OpenShift à nœud unique d'origine conserve le rôle de nœud du plan de contrôle. L'ajout de nœuds de travail ne nécessite aucun temps d'arrêt pour le cluster OpenShift à nœud unique existant.
Bien qu'il n'y ait pas de limite spécifiée sur le nombre de nœuds de travail que vous pouvez ajouter à un cluster OpenShift à nœud unique, vous devez réévaluer l'allocation de CPU réservée sur le nœud de plan de contrôle pour les nœuds de travail supplémentaires.
Si vous avez besoin d'un partitionnement de la charge de travail sur le nœud de travail, vous devez déployer et remédier aux stratégies de cluster gérées sur le cluster du concentrateur avant d'installer le nœud. De cette façon, les objets MachineConfig
de partitionnement de la charge de travail sont rendus et associés au pool de configuration de la machine worker
avant que le flux de travail ZTP de GitOps n'applique le fichier d'allumage MachineConfig
au nœud de travailleur.
Il est recommandé de remédier d'abord aux stratégies, puis d'installer le nœud de travail. Si vous créez les manifestes de partitionnement de la charge de travail après avoir installé le nœud de travail, vous devez drainer le nœud manuellement et supprimer tous les modules gérés par les ensembles de démons. Lorsque les ensembles de démons de gestion créent les nouveaux modules, ceux-ci sont soumis au processus de partitionnement de la charge de travail.
L'ajout de nœuds de travail à des clusters OpenShift à nœud unique avec GitOps ZTP 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 de les utiliser 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.
21.12.1. Application de profils au nœud de travail Copier lienLien copié sur presse-papiers!
Vous pouvez configurer le nœud de travail supplémentaire avec un profil DU.
Vous pouvez appliquer un profil d'unité distribuée (DU) RAN à la grappe de nœuds de travailleur à l'aide des ressources ZTP GitOps communes, de groupe et spécifiques au site PolicyGenTemplate
. Le pipeline ZTP GitOps lié à l'application ArgoCD policies
comprend les CR suivants que vous trouverez dans le dossier out/argocd/example/policygentemplates
lorsque vous extrayez le conteneur ztp-site-generate
:
-
common-ranGen.yaml
-
group-du-sno-ranGen.yaml
-
example-sno-site.yaml
-
ns.yaml
-
kustomization.yaml
La configuration du profil d'UD sur le nœud de travail est considérée comme une mise à niveau. Pour lancer le flux de mise à niveau, vous devez mettre à jour les stratégies existantes ou en créer de nouvelles. Ensuite, vous devez créer un CR ClusterGroupUpgrade
pour réconcilier les stratégies dans le groupe de clusters.
21.12.2. (Facultatif) Assurer la compatibilité des sélecteurs des démons PTP et SR-IOV Copier lienLien copié sur presse-papiers!
Si le profil DU a été déployé à l'aide du plugin GitOps ZTP version 4.11 ou antérieure, les opérateurs PTP et SR-IOV peuvent être configurés pour placer les démons uniquement sur les nœuds étiquetés comme master
. Cette configuration empêche les démons PTP et SR-IOV de fonctionner sur le nœud de travail. Si les sélecteurs de nœuds des démons PTP et SR-IOV sont mal configurés sur votre système, vous devez modifier les démons avant de procéder à la configuration du profil de l'UD travailleur.
Procédure
Vérifiez les paramètres du sélecteur de nœud du démon de l'opérateur PTP sur l'un des clusters de rayons :
oc get ptpoperatorconfig/default -n openshift-ptp -ojsonpath='{.spec}' | jq
$ oc get ptpoperatorconfig/default -n openshift-ptp -ojsonpath='{.spec}' | jq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie pour l'opérateur PTP
{\i1}"daemonNodeSelector":{\i1}"node-role.kubernetes.io/master":{\i1}"\N- \N"\N"\N"}}
{\i1}"daemonNodeSelector":{\i1}"node-role.kubernetes.io/master":{\i1}"\N- \N"\N"\N"}}
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Si le sélecteur de nœud est défini sur
master
, le rayon a été déployé avec la version du plugin ZTP qui nécessite des modifications.
Vérifiez les paramètres du sélecteur de nœud démon de l'opérateur SR-IOV sur l'un des clusters de rayons :
oc get sriovoperatorconfig/default -n \ openshift-sriov-network-operator -ojsonpath='{.spec}' | jq
$ oc get sriovoperatorconfig/default -n \ openshift-sriov-network-operator -ojsonpath='{.spec}' | jq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie pour l'opérateur SR-IOV
{\aemonNodeSelector":{"node-role.kubernetes.io/worker":\N"\N"},\N "disableDrain":false,\N "enableInjector":true,\N "enableOperatorWebhook":true}
{\aemonNodeSelector":{"node-role.kubernetes.io/worker":\N"\N"},\N "disableDrain":false,\N "enableInjector":true,\N "enableOperatorWebhook":true}
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Si le sélecteur de nœud est défini sur
master
, le rayon a été déployé avec la version du plugin ZTP qui nécessite des modifications.
Dans la stratégie de groupe, ajoutez les entrées
complianceType
etspec
suivantes :Copy to Clipboard Copied! Toggle word wrap Toggle overflow ImportantLa modification du champ
daemonNodeSelector
entraîne une perte temporaire de synchronisation PTP et une perte de connectivité SR-IOV.- Commencer les changements dans Git, puis pousser vers le dépôt Git surveillé par l'application GitOps ZTP ArgoCD.
21.12.3. Compatibilité des sélecteurs de nœuds PTP et SR-IOV Copier lienLien copié sur presse-papiers!
Les ressources de configuration PTP et les stratégies de nœuds de réseau SR-IOV utilisent node-role.kubernetes.io/master: ""
comme sélecteur de nœuds. Si les nœuds de travail supplémentaires ont la même configuration de carte réseau que le nœud du plan de contrôle, les stratégies utilisées pour configurer le nœud du plan de contrôle peuvent être réutilisées pour les nœuds de travail. Toutefois, le sélecteur de nœud doit être modifié pour sélectionner les deux types de nœuds, par exemple avec l'étiquette "node-role.kubernetes.io/worker"
.
21.12.4. Utilisation des CR PolicyGenTemplate pour appliquer des politiques aux nœuds de travailleur Copier lienLien copié sur presse-papiers!
Vous pouvez créer des règles pour les nœuds de travail.
Procédure
Créez le modèle de politique suivant :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Les politiques sont appliquées à tous les clusters portant cette étiquette.
- 2
- Le champ
MCP
doit être défini commeworker
. - 3
- Ce CR générique
MachineConfig
est utilisé pour configurer le partitionnement de la charge de travail sur le nœud de travail. - 4
- Les champs
cpu.isolated
etcpu.reserved
doivent être configurés pour chaque plate-forme matérielle. - 5
- L'ensemble d'unités centrales
cmdline_crash
doit correspondre à l'ensemble d'unités centralescpu.isolated
dans la sectionPerformanceProfile
.
Un CR générique
MachineConfig
est utilisé pour configurer le partitionnement de la charge de travail sur le nœud de travail. Vous pouvez générer le contenu des fichiers de configurationcrio
etkubelet
.-
Ajoutez le modèle de politique créé au dépôt Git surveillé par l'application ArgoCD
policies
. -
Ajouter la politique dans le fichier
kustomization.yaml
. - Commencer les changements dans Git, puis pousser vers le dépôt Git surveillé par l'application GitOps ZTP ArgoCD.
Pour remédier aux nouvelles politiques dans votre cluster de rayons, créez une ressource personnalisée TALM :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
21.12.5. Ajouter des nœuds de travail à des clusters OpenShift à nœud unique avec GitOps ZTP Copier lienLien copié sur presse-papiers!
Vous pouvez ajouter un ou plusieurs nœuds de travail à des clusters OpenShift à nœud unique existants afin d'augmenter les ressources CPU disponibles dans le cluster.
Conditions préalables
- Installer et configurer RHACM 2.6 ou version ultérieure dans un cluster de hub bare-metal OpenShift Container Platform 4.11 ou version ultérieure
- Installer Topology Aware Lifecycle Manager dans le cluster hub
- Installer Red Hat OpenShift GitOps dans le cluster hub
-
Utilisez l'image du conteneur GitOps ZTP
ztp-site-generate
version 4.12 ou ultérieure - Déployer un cluster OpenShift géré à un seul nœud avec GitOps ZTP
- Configurer la gestion centrale de l'infrastructure comme décrit dans la documentation RHACM
-
Configurer le DNS desservant le cluster pour résoudre le point de terminaison de l'API interne
api-int.<cluster_name>.<base_domain>
Procédure
Si vous avez déployé votre cluster en utilisant le manifeste
example-sno.yaml
SiteConfig
, ajoutez votre nouveau nœud de travail à la listespec.clusters['example-sno'].nodes
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un secret d'authentification BMC pour le nouvel hôte, référencé par le champ
bmcCredentialsName
dans la sectionspec.nodes
de votre fichierSiteConfig
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Commencer les changements dans Git, puis pousser vers le dépôt Git qui est surveillé par l'application GitOps ZTP ArgoCD.
Lorsque l'application ArgoCD
cluster
se synchronise, deux nouveaux manifestes apparaissent sur le hub cluster généré par le plugin ZTP :-
BareMetalHost
NMStateConfig
ImportantLe champ
cpuset
ne doit pas être configuré pour le nœud de travail. Le partitionnement de la charge de travail pour les nœuds de travail est ajouté par le biais de stratégies de gestion une fois l'installation du nœud terminée.
-
Vérification
Vous pouvez contrôler le processus d'installation de plusieurs manières.
Vérifiez que les images de préprovisionnement sont créées en exécutant la commande suivante :
oc get ppimg -n example-sno
$ oc get ppimg -n example-sno
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAMESPACE NAME READY REASON example-sno example-sno True ImageCreated example-sno example-node2 True ImageCreated
NAMESPACE NAME READY REASON example-sno example-sno True ImageCreated example-sno example-node2 True ImageCreated
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifier l'état des hôtes nus :
oc get bmh -n example-sno
$ oc get bmh -n example-sno
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME STATE CONSUMER ONLINE ERROR AGE example-sno provisioned true 69m example-node2 provisioning true 4m50s
NAME STATE CONSUMER ONLINE ERROR AGE example-sno provisioned true 69m example-node2 provisioning true 4m50s
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- L'état
provisioning
indique que l'amorçage du nœud à partir du support d'installation est en cours.
Contrôler en permanence le processus d'installation :
Observez le processus d'installation de l'agent en exécutant la commande suivante :
oc get agent -n example-sno --watch
$ oc get agent -n example-sno --watch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Lorsque l'installation du nœud de travailleur est terminée, les certificats du nœud de travailleur sont approuvés automatiquement. À ce stade, le nœud de travailleur apparaît dans l'état
ManagedClusterInfo
. Exécutez la commande suivante pour voir l'état :oc get managedclusterinfo/example-sno -n example-sno -o \ jsonpath='{range .status.nodeList[*]}{.name}{"\t"}{.conditions}{"\t"}{.labels}{"\n"}{end}'
$ oc get managedclusterinfo/example-sno -n example-sno -o \ jsonpath='{range .status.nodeList[*]}{.name}{"\t"}{.conditions}{"\t"}{.labels}{"\n"}{end}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
example-sno [{"status":"True","type":"Ready"}] {"node-role.kubernetes.io/master":"","node-role.kubernetes.io/worker":""} example-node2 [{"status":"True","type":"Ready"}] {"node-role.kubernetes.io/worker":""}
example-sno [{"status":"True","type":"Ready"}] {"node-role.kubernetes.io/master":"","node-role.kubernetes.io/worker":""} example-node2 [{"status":"True","type":"Ready"}] {"node-role.kubernetes.io/worker":""}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow