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}' | jqExemple de sortie pour l'opérateur PTP
{\i1}"daemonNodeSelector":{\i1}"node-role.kubernetes.io/master":{\i1}"\N- \N"\N"\N"}}1 - 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}' | jqExemple 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}1 - 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
complianceTypeetspecsuivantes :spec: - fileName: PtpOperatorConfig.yaml policyName: "config-policy" complianceType: mustonlyhave spec: daemonNodeSelector: node-role.kubernetes.io/worker: "" - fileName: SriovOperatorConfig.yaml policyName: "config-policy" complianceType: mustonlyhave spec: configDaemonNodeSelector: node-role.kubernetes.io/worker: ""ImportantLa modification du champ
daemonNodeSelectorentraî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 :
apiVersion: ran.openshift.io/v1 kind: PolicyGenTemplate metadata: name: "example-sno-workers" namespace: "example-sno" spec: bindingRules: sites: "example-sno"1 mcp: "worker"2 sourceFiles: - fileName: MachineConfigGeneric.yaml3 policyName: "config-policy" metadata: labels: machineconfiguration.openshift.io/role: worker name: enable-workload-partitioning spec: config: storage: files: - contents: source: data:text/plain;charset=utf-8;base64,W2NyaW8ucnVudGltZS53b3JrbG9hZHMubWFuYWdlbWVudF0KYWN0aXZhdGlvbl9hbm5vdGF0aW9uID0gInRhcmdldC53b3JrbG9hZC5vcGVuc2hpZnQuaW8vbWFuYWdlbWVudCIKYW5ub3RhdGlvbl9wcmVmaXggPSAicmVzb3VyY2VzLndvcmtsb2FkLm9wZW5zaGlmdC5pbyIKcmVzb3VyY2VzID0geyAiY3B1c2hhcmVzIiA9IDAsICJjcHVzZXQiID0gIjAtMyIgfQo= mode: 420 overwrite: true path: /etc/crio/crio.conf.d/01-workload-partitioning user: name: root - contents: source: data:text/plain;charset=utf-8;base64,ewogICJtYW5hZ2VtZW50IjogewogICAgImNwdXNldCI6ICIwLTMiCiAgfQp9Cg== mode: 420 overwrite: true path: /etc/kubernetes/openshift-workload-pinning user: name: root - fileName: PerformanceProfile.yaml policyName: "config-policy" metadata: name: openshift-worker-node-performance-profile spec: cpu:4 isolated: "4-47" reserved: "0-3" hugepages: defaultHugepagesSize: 1G pages: - size: 1G count: 32 realTimeKernel: enabled: true - fileName: TunedPerformancePatch.yaml policyName: "config-policy" metadata: name: performance-patch-worker spec: profile: - name: performance-patch-worker data: | [main] summary=Configuration changes profile inherited from performance created tuned include=openshift-node-performance-openshift-worker-node-performance-profile [bootloader] cmdline_crash=nohz_full=4-475 [sysctl] kernel.timer_migration=1 [scheduler] group.ice-ptp=0:f:10:*:ice-ptp.* [service] service.stalld=start,enable service.chronyd=stop,disable recommend: - profile: performance-patch-worker- 1
- Les politiques sont appliquées à tous les clusters portant cette étiquette.
- 2
- Le champ
MCPdoit être défini commeworker. - 3
- Ce CR générique
MachineConfigest utilisé pour configurer le partitionnement de la charge de travail sur le nœud de travail. - 4
- Les champs
cpu.isolatedetcpu.reserveddoivent être configurés pour chaque plate-forme matérielle. - 5
- L'ensemble d'unités centrales
cmdline_crashdoit correspondre à l'ensemble d'unités centralescpu.isolateddans la sectionPerformanceProfile.
Un CR générique
MachineConfigest 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 configurationcrioetkubelet.-
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 :
$ cat <<EOF | oc apply -f - apiVersion: ran.openshift.io/v1alpha1 kind: ClusterGroupUpgrade metadata: name: example-sno-worker-policies namespace: default spec: backup: false clusters: - example-sno enable: true managedPolicies: - group-du-sno-config-policy - example-sno-workers-config-policy - example-sno-config-policy preCaching: false remediationStrategy: maxConcurrency: 1 EOF
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-generateversion 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.yamlSiteConfig, ajoutez votre nouveau nœud de travail à la listespec.clusters['example-sno'].nodes:nodes: - hostName: "example-node2.example.com" role: "worker" bmcAddress: "idrac-virtualmedia+https://[1111:2222:3333:4444::bbbb:1]/redfish/v1/Systems/System.Embedded.1" bmcCredentialsName: name: "example-node2-bmh-secret" bootMACAddress: "AA:BB:CC:DD:EE:11" bootMode: "UEFI" nodeNetwork: interfaces: - name: eno1 macAddress: "AA:BB:CC:DD:EE:11" config: interfaces: - name: eno1 type: ethernet state: up macAddress: "AA:BB:CC:DD:EE:11" ipv4: enabled: false ipv6: enabled: true address: - ip: 1111:2222:3333:4444::1 prefix-length: 64 dns-resolver: config: search: - example.com server: - 1111:2222:3333:4444::2 routes: config: - destination: ::/0 next-hop-interface: eno1 next-hop-address: 1111:2222:3333:4444::1 table-id: 254Créez un secret d'authentification BMC pour le nouvel hôte, référencé par le champ
bmcCredentialsNamedans la sectionspec.nodesde votre fichierSiteConfig:apiVersion: v1 data: password: "password" username: "username" kind: Secret metadata: name: "example-node2-bmh-secret" namespace: example-sno type: OpaqueCommencer 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
clusterse synchronise, deux nouveaux manifestes apparaissent sur le hub cluster généré par le plugin ZTP :-
BareMetalHost NMStateConfigImportantLe champ
cpusetne 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-snoExemple de sortie
NAMESPACE NAME READY REASON example-sno example-sno True ImageCreated example-sno example-node2 True ImageCreatedVérifier l'état des hôtes nus :
$ oc get bmh -n example-snoExemple de sortie
NAME STATE CONSUMER ONLINE ERROR AGE example-sno provisioned true 69m example-node2 provisioning true 4m50s1 - 1
- L'état
provisioningindique 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 --watchExemple de sortie
NAME CLUSTER APPROVED ROLE STAGE 671bc05d-5358-8940-ec12-d9ad22804faa example-sno true master Done [...] 14fd821b-a35d-9cba-7978-00ddf535ff37 example-sno true worker Starting installation 14fd821b-a35d-9cba-7978-00ddf535ff37 example-sno true worker Installing 14fd821b-a35d-9cba-7978-00ddf535ff37 example-sno true worker Writing image to disk [...] 14fd821b-a35d-9cba-7978-00ddf535ff37 example-sno true worker Waiting for control plane [...] 14fd821b-a35d-9cba-7978-00ddf535ff37 example-sno true worker Rebooting 14fd821b-a35d-9cba-7978-00ddf535ff37 example-sno true worker DoneLorsque 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}'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":""}