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.

Note

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.

Important

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.

Ressources supplémentaires

21.12.1. Application de profils au nœud de travail

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

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

  1. 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

    Exemple 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.
  2. 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

    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} 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.
  3. Dans la stratégie de groupe, ajoutez les entrées complianceType et spec suivantes :

    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: ""
    Important

    La modification du champ daemonNodeSelector entraîne une perte temporaire de synchronisation PTP et une perte de connectivité SR-IOV.

  4. 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

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

Vous pouvez créer des règles pour les nœuds de travail.

Procédure

  1. 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.yaml 3
          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-47 5
                  [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 MCP doit être défini comme worker.
    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 et cpu.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 centrales cpu.isolated dans la section PerformanceProfile.

    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 configuration crio et kubelet.

  2. Ajoutez le modèle de politique créé au dépôt Git surveillé par l'application ArgoCD policies.
  3. Ajouter la politique dans le fichier kustomization.yaml.
  4. Commencer les changements dans Git, puis pousser vers le dépôt Git surveillé par l'application GitOps ZTP ArgoCD.
  5. 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

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

  1. Si vous avez déployé votre cluster en utilisant le manifeste example-sno.yaml SiteConfig , ajoutez votre nouveau nœud de travail à la liste spec.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: 254
  2. Créez un secret d'authentification BMC pour le nouvel hôte, référencé par le champ bmcCredentialsName dans la section spec.nodes de votre fichier SiteConfig:

    apiVersion: v1
    data:
      password: "password"
      username: "username"
    kind: Secret
    metadata:
      name: "example-node2-bmh-secret"
      namespace: example-sno
    type: Opaque
  3. 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

      Important

      Le 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

    Exemple de sortie

    NAMESPACE       NAME            READY   REASON
    example-sno     example-sno     True    ImageCreated
    example-sno     example-node2   True    ImageCreated

  • Vérifier l'état des hôtes nus :

    $ oc get bmh -n example-sno

    Exemple de sortie

    NAME            STATE          CONSUMER   ONLINE   ERROR   AGE
    example-sno     provisioned               true             69m
    example-node2   provisioning              true             4m50s 1

    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 :

    1. Observez le processus d'installation de l'agent en exécutant la commande suivante :

      $ oc get agent -n example-sno --watch

      Exemple 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   Done

    2. 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}'

      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":""}

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.