5.11. Détection et support de clusters à haute disponibilité ou à un seul nœud


Afin de s’assurer que votre opérateur fonctionne bien sur les modes haute disponibilité (HA) et non-HA dans les clusters OpenShift Container Platform, vous pouvez utiliser le SDK de l’opérateur pour détecter la topologie de l’infrastructure du cluster et définir les besoins en ressources pour s’adapter à la topologie du cluster.

Le cluster OpenShift Container Platform peut être configuré en mode haute disponibilité (HA), qui utilise plusieurs nœuds, ou en mode non-HA, qui utilise un seul nœud. Il est probable qu’un cluster à un seul nœud, également connu sous le nom d’OpenShift à un seul nœud, aura des contraintes de ressources plus conservatrices. Il est donc important que les opérateurs installés sur un cluster à nœud unique puissent s’ajuster en conséquence et fonctionner bien.

En accédant à l’API de mode haute disponibilité de cluster fournie dans Red Hat OpenShift Service sur AWS, les auteurs de l’opérateur peuvent utiliser le SDK de l’opérateur pour permettre à leur opérateur de détecter la topologie de l’infrastructure d’un cluster, que ce soit en mode HA ou non-HA. La logique de l’opérateur personnalisé peut être développée qui utilise la topologie de cluster détectée pour changer automatiquement les besoins en ressources, à la fois pour l’opérateur et pour tous les Operands ou charges de travail qu’il gère, à un profil qui correspond le mieux à la topologie.

Important

La version prise en charge par Red Hat de l’outil Operator SDK CLI, y compris les outils d’échafaudage et de test connexes pour les projets Opérateur, est dépréciée et devrait être supprimée dans une future version de Red Hat OpenShift Service sur AWS. Le Red Hat fournira des corrections de bogues et une prise en charge de cette fonctionnalité pendant le cycle de vie de la version actuelle, mais cette fonctionnalité ne recevra plus d’améliorations et sera supprimée du futur service Red Hat OpenShift sur les versions AWS.

La version prise en charge par Red Hat du SDK de l’opérateur n’est pas recommandée pour la création de nouveaux projets d’opérateur. Les auteurs d’opérateurs avec des projets d’opérateur existants peuvent utiliser la version de l’outil Operator SDK CLI publié avec Red Hat OpenShift Service sur AWS 4 pour maintenir leurs projets et créer des versions d’opérateur ciblant de nouvelles versions de Red Hat OpenShift Service sur AWS.

Les images de base suivantes pour les projets d’opérateur ne sont pas dépréciées. Les fonctionnalités d’exécution et les API de configuration de ces images de base sont toujours prises en charge pour les corrections de bogues et pour l’adressage des CVE.

  • L’image de base pour les projets d’opérateurs basés sur Ansible
  • L’image de base pour les projets d’opérateur basé sur Helm

Afin d’obtenir de l’information sur la version non prise en charge et gérée par la communauté du SDK de l’opérateur, voir Operator SDK (Operator Framework).

Le service OpenShift Red Hat sur AWS fournit une API de mode à haute disponibilité en cluster qui peut être utilisée par les opérateurs pour aider à détecter la topologie de l’infrastructure. L’API Infrastructure détient des informations à l’échelle du cluster concernant l’infrastructure. Les opérateurs gérés par Operator Lifecycle Manager (OLM) peuvent utiliser l’API Infrastructure s’ils ont besoin de configurer une charge de travail Operand ou gérée différemment en fonction du mode haute disponibilité.

Dans l’API Infrastructure, l’état de l’infrastructureTopology exprime les attentes pour les services d’infrastructure qui ne fonctionnent pas sur les nœuds de plan de contrôle, généralement indiqués par un sélecteur de nœud pour une valeur de rôle autre que master. Le statut controlPlaneTopology exprime les attentes pour les Operands qui fonctionnent normalement sur les nœuds de plan de contrôle.

Le paramètre par défaut pour l’un ou l’autre état est HighlyAvailable, ce qui représente le comportement des opérateurs dans plusieurs clusters de nœuds. Le paramètre SingleReplica est utilisé dans les clusters à nœud unique, également connu sous le nom d’OpenShift à nœud unique, et indique que les opérateurs ne doivent pas configurer leurs opérandes pour une opération à haute disponibilité.

Le Red Hat OpenShift Service sur AWS installateur définit les champs d’état controlPlaneTopology et infrastructureTopology en fonction du nombre de répliques pour le cluster lorsqu’il est créé, selon les règles suivantes:

  • Lorsque le nombre de répliques du plan de contrôle est inférieur à 3, le statut controlPlaneTopology est défini sur SingleReplica. Dans le cas contraire, il est réglé sur HighlyDisponible.
  • Lorsque le nombre de répliques du travailleur est 0, les nœuds de plan de contrôle sont également configurés en tant que travailleurs. Ainsi, le statut d’infrastructureTopology sera le même que le statut controlPlaneTopology.
  • Lorsque le nombre de répliques du travailleur est 1, l’infrastructureTopology est définie sur SingleReplica. Dans le cas contraire, il est réglé sur HighlyDisponible.

En tant qu’auteur de l’opérateur, vous pouvez mettre à jour votre projet Opérateur pour accéder à l’API Infrastructure en utilisant les constructions normales de Kubernetes et la bibliothèque contrôleur-exécution, comme indiqué dans les exemples suivants:

exemple de bibliothèque Controller-runtime

// Simple query
 nn := types.NamespacedName{
 Name: "cluster",
 }
 infraConfig := &configv1.Infrastructure{}
 err = crClient.Get(context.Background(), nn, infraConfig)
 if err != nil {
 return err
 }
 fmt.Printf("using crclient: %v\n", infraConfig.Status.ControlPlaneTopology)
 fmt.Printf("using crclient: %v\n", infraConfig.Status.InfrastructureTopology)
Copy to Clipboard Toggle word wrap

Kubernetes construit l’exemple

operatorConfigInformer := configinformer.NewSharedInformerFactoryWithOptions(configClient, 2*time.Second)
 infrastructureLister = operatorConfigInformer.Config().V1().Infrastructures().Lister()
 infraConfig, err := configClient.ConfigV1().Infrastructures().Get(context.Background(), "cluster", metav1.GetOptions{})
 if err != nil {
 return err
 }
// fmt.Printf("%v\n", infraConfig)
 fmt.Printf("%v\n", infraConfig.Status.ControlPlaneTopology)
 fmt.Printf("%v\n", infraConfig.Status.InfrastructureTopology)
Copy to Clipboard Toggle word wrap

Retour au début
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. Découvrez nos récentes mises à jour.

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 le Blog 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.

Theme

© 2025 Red Hat