13.2. Exemple de ressource MachineHealthCheck
La ressource MachineHealthCheck
pour tous les types d'installation basés sur le cloud, et autre que bare metal, ressemble au fichier YAML suivant :
apiVersion: machine.openshift.io/v1beta1 kind: MachineHealthCheck metadata: name: example 1 namespace: openshift-machine-api spec: selector: matchLabels: machine.openshift.io/cluster-api-machine-role: <role> 2 machine.openshift.io/cluster-api-machine-type: <role> 3 machine.openshift.io/cluster-api-machineset: <cluster_name>-<label>-<zone> 4 unhealthyConditions: - type: "Ready" timeout: "300s" 5 status: "False" - type: "Ready" timeout: "300s" 6 status: "Unknown" maxUnhealthy: "40%" 7 nodeStartupTimeout: "10m" 8
- 1
- Indiquez le nom du bilan de santé de la machine à déployer.
- 2 3
- Spécifiez une étiquette pour le pool de machines que vous souhaitez vérifier.
- 4
- Indiquez le jeu de machines à suivre au format
<cluster_name>-<label>-<zone>
. Par exemple,prod-node-us-east-1a
. - 5 6
- Spécifiez la durée du délai d'attente pour une condition de nœud. Si une 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.
- 7
- 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. - 8
- 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.
13.2.1. Court-circuitage du contrôle de santé de la machine remédiation
Le court-circuitage garantit que les contrôles de santé des machines ne remédient aux machines que lorsque le cluster est sain. Le court-circuitage est configuré via le champ maxUnhealthy
de la ressource MachineHealthCheck
.
Si l'utilisateur définit une valeur pour le champ maxUnhealthy
, avant de remédier à des machines, MachineHealthCheck
compare la valeur de maxUnhealthy
avec le nombre de machines dans son pool cible qu'il a déterminé comme n'étant pas en bonne santé. La remédiation n'est pas effectuée si le nombre de machines malsaines dépasse la limite fixée par maxUnhealthy
.
Si maxUnhealthy
n'est pas défini, la valeur par défaut est 100%
et les machines sont remédiées quel que soit l'état du cluster.
La valeur appropriée de maxUnhealthy
dépend de l'échelle du cluster que vous déployez et du nombre de machines couvertes par MachineHealthCheck
. Par exemple, vous pouvez utiliser la valeur maxUnhealthy
pour couvrir plusieurs ensembles de machines de calcul dans plusieurs zones de disponibilité, de sorte que si vous perdez une zone entière, votre paramètre maxUnhealthy
empêche toute autre remédiation au sein du cluster. Dans les régions Azure globales qui ne disposent pas de plusieurs zones de disponibilité, vous pouvez utiliser des ensembles de disponibilité pour assurer une haute disponibilité.
Si vous configurez une ressource MachineHealthCheck
pour le plan de contrôle, définissez la valeur de maxUnhealthy
sur 1
.
Cette configuration garantit que le contrôle de l'état des machines ne prend aucune mesure lorsque plusieurs machines du plan de contrôle semblent être en mauvaise santé. Plusieurs machines de plan de contrôle malsaines peuvent indiquer que le cluster etcd est dégradé ou qu'une opération de mise à l'échelle visant à remplacer une machine défaillante est en cours.
Si le cluster etcd est dégradé, une intervention manuelle peut être nécessaire. Si une opération de mise à l'échelle est en cours, le bilan de santé de la machine doit permettre de la terminer.
Le champ maxUnhealthy
peut être défini comme un nombre entier ou un pourcentage. Il existe différentes implémentations de remédiation en fonction de la valeur de maxUnhealthy
.
13.2.1.1. Réglage de l'insalubrité maximale par l'utilisation d'une valeur absolue
Si maxUnhealthy
est défini sur 2
:
- La remédiation sera effectuée si 2 nœuds ou moins sont malsains
- La remédiation ne sera pas effectuée si 3 nœuds ou plus sont malsains
Ces valeurs sont indépendantes du nombre de machines contrôlées par le bilan de santé.
13.2.1.2. Fixation de l'insalubrité maximale à l'aide de pourcentages
Si maxUnhealthy
est défini sur 40%
et qu'il y a 25 machines en cours de vérification :
- La remédiation sera effectuée si 10 nœuds ou moins sont malsains
- La remédiation ne sera pas effectuée si 11 nœuds ou plus sont malsains
Si maxUnhealthy
est défini sur 40%
et qu'il y a 6 machines en cours de contrôle :
- La remédiation sera effectuée si 2 nœuds ou moins sont malsains
- La remédiation ne sera pas effectuée si 3 nœuds ou plus sont malsains
Le nombre de machines autorisé est arrondi à la baisse lorsque le pourcentage de machines maxUnhealthy
contrôlées n'est pas un nombre entier.