13.4. A propos de la remédiation basée sur l'énergie du métal nu
Dans un cluster bare metal, la remédiation des nœuds est essentielle pour assurer la santé globale du cluster. La remédiation physique d'un cluster peut s'avérer difficile et tout retard dans la mise en état de sécurité ou de fonctionnement de la machine augmente la durée pendant laquelle le cluster reste dans un état dégradé, ainsi que le risque que des défaillances ultérieures mettent le cluster hors ligne. La remédiation basée sur l'énergie permet de relever ces défis.
Au lieu de reprovisionner les nœuds, la remédiation basée sur l'alimentation utilise un contrôleur d'alimentation pour mettre hors tension un nœud inopérant. Ce type de remédiation est également appelé "power fencing".
OpenShift Container Platform utilise le contrôleur MachineHealthCheck
pour détecter les nœuds bare metal défectueux. La remédiation basée sur la puissance est rapide et redémarre les nœuds défectueux au lieu de les retirer du cluster.
La remédiation basée sur l'énergie offre les possibilités suivantes :
- Permet la récupération des nœuds du plan de contrôle
- Réduit le risque de perte de données dans les environnements hyperconvergés
- Réduction des temps d'arrêt liés à la récupération des machines physiques
13.4.1. MachineHealthChecks sur le métal nu
La suppression d'une machine sur un cluster bare metal déclenche le reprovisionnement d'un hôte bare metal. Habituellement, le reprovisionnement d'un hôte bare metal est un processus long, au cours duquel le cluster manque de ressources de calcul et les applications peuvent être interrompues. Pour changer le processus de remédiation par défaut de la suppression de la machine au cycle d'alimentation de l'hôte, annotez la ressource MachineHealthCheck
avec l'annotation machine.openshift.io/remediation-strategy: external-baremetal
.
Une fois l'annotation définie, les machines insalubres sont mises hors tension à l'aide des informations d'identification BMC.
13.4.2. Comprendre le processus de remédiation
Le processus de remédiation se déroule comme suit :
- Le contrôleur MachineHealthCheck (MHC) détecte qu'un nœud n'est pas sain.
- Le MHC informe le contrôleur de la machine nue qui demande la mise hors tension du nœud en mauvais état.
- Après la mise hors tension, le nœud est supprimé, ce qui permet à la grappe de reprogrammer la charge de travail concernée sur d'autres nœuds.
- Le contrôleur de la machine nue demande à mettre le nœud sous tension.
- Une fois que le nœud est opérationnel, il se réenregistre auprès de la grappe, ce qui entraîne la création d'un nouveau nœud.
- Une fois le nœud recréé, le contrôleur de machine bare metal restaure les annotations et les étiquettes qui existaient sur le nœud malsain avant sa suppression.
Si les opérations d'alimentation n'ont pas abouti, le contrôleur de la machine bare metal déclenche le reprovisionnement du nœud malsain, sauf s'il s'agit d'un nœud de plan de contrôle ou d'un nœud provisionné de manière externe.
13.4.3. Création d'une ressource MachineHealthCheck pour le bare metal
Conditions préalables
- OpenShift Container Platform est installé à l'aide d'une infrastructure fournie par l'installateur (IPI).
- Accès aux informations d'identification du contrôleur de gestion de la carte de base (BMC) (ou accès BMC à chaque nœud)
- Accès réseau à l'interface BMC du nœud malade.
Procédure
-
Créez un fichier
healthcheck.yaml
qui contient la définition du contrôle de l'état de santé de votre machine. -
Appliquez le fichier
healthcheck.yaml
à votre cluster à l'aide de la commande suivante :
$ oc apply -f healthcheck.yaml
Exemple de ressource MachineHealthCheck
pour le métal nu
apiVersion: machine.openshift.io/v1beta1 kind: MachineHealthCheck metadata: name: example 1 namespace: openshift-machine-api annotations: machine.openshift.io/remediation-strategy: external-baremetal 2 spec: selector: matchLabels: machine.openshift.io/cluster-api-machine-role: <role> 3 machine.openshift.io/cluster-api-machine-type: <role> 4 machine.openshift.io/cluster-api-machineset: <cluster_name>-<label>-<zone> 5 unhealthyConditions: - type: "Ready" timeout: "300s" 6 status: "False" - type: "Ready" timeout: "300s" 7 status: "Unknown" maxUnhealthy: "40%" 8 nodeStartupTimeout: "10m" 9
- 1
- Indiquez le nom du bilan de santé de la machine à déployer.
- 2
- Pour les clusters bare metal, vous devez inclure l'annotation
machine.openshift.io/remediation-strategy: external-baremetal
dans la sectionannotations
pour activer la remédiation par cycle d'alimentation. Avec cette stratégie de remédiation, les hôtes malsains sont redémarrés au lieu d'être retirés du cluster. - 3 4
- Spécifiez une étiquette pour le pool de machines que vous souhaitez vérifier.
- 5
- Spécifiez le jeu de machines de calcul à suivre au format
<cluster_name>-<label>-<zone>
. Par exemple,prod-node-us-east-1a
. - 6 7
- Indiquez la durée du délai d'attente pour la condition de nœud. Si la condition est remplie pendant la durée du délai, la machine sera remédiée. Les délais d'attente prolongés peuvent entraîner de longues périodes d'indisponibilité pour une charge de travail sur une machine en mauvais état.
- 8
- Spécifiez le nombre de machines autorisées à être assainies simultanément dans le pool ciblé. Il peut s'agir d'un pourcentage ou d'un nombre entier. Si le nombre de machines malsaines dépasse la limite fixée par
maxUnhealthy
, la remédiation n'est pas effectuée. - 9
- Spécifiez le délai d'attente pour qu'un contrôle de l'état de santé d'une machine attende qu'un nœud rejoigne la grappe avant qu'une machine ne soit considérée comme étant en mauvais état.
Le site matchLabels
n'est qu'un exemple ; vous devez définir vos groupes de machines en fonction de vos besoins spécifiques.
Pour résoudre un problème lié à la remédiation basée sur l'alimentation, vérifiez les points suivants :
- Vous avez accès à la BMC.
- BMC est connecté au nœud du plan de contrôle responsable de l'exécution de la tâche de remédiation.