Come Utilizzare i MachineHealthCheck in OpenShift per migliorare lo stato del tuo cluster

  • Di
  • 2025-04-15 - 3 minuti
banner

La gestione dell’integrità dei nodi in un cluster OpenShift è fondamentale per garantire la stabilità e la scalabilità delle applicazioni distribuite. Una delle funzionalità chiave di OpenShift è il MachineHealthCheck, che consente di automatizzare il monitoraggio e la risoluzione dei problemi nelle macchine del cluster. Questo strumento è essenziale per ridurre i tempi di inattività e migliorare la gestione operativa del cluster. In questo articolo, esploreremo come funziona un MachineHealthCheck e come può essere configurato per ottimizzare lo stato dei nodi in un ambiente OpenShift.

Cos’è un MachineHealthCheck

Un MachineHealthCheck è una risorsa custom in OpenShift che consente di definire le condizioni in base alle quali le macchine in un cluster sono considerate non più in grado di operare (stato unhealthy). Questo componente monitora e corregge automaticamente le macchine in base a queste condizioni, garantendo stabilità e affidabilità del cluster.

La configurazione di MachineHealthCheck è utile per diversi motivi:

  • Remediation automatica: le macchine che non superano i controlli, vengono eliminate e sostituite automaticamente, riducendo al minimo i tempi di inattività e garantendo un’alta disponibilità.
  • Stabilità del cluster: identificando e correggendo le macchine non in grado di lavorare, si mantiene un ambiente cluster stabile, fondamentale per i carichi di lavoro di produzione.
  • Efficienza delle risorse: aiuta a gestire le risorse in modo efficace assicurando che i nodi unhealthy vengano prontamente sostituiti, prevenendo lo spreco di risorse.

Esempio

Ecco un esempio di configurazione MachineHealthCheck:

apiVersion: machine.openshift.io/v1beta1
kind: MachineHealthCheck
metadata:
  name: example #1
  namespace: openshift-machine-api
spec:
  selector:
    matchLabels: #2
      machine.openshift.io/cluster-api-machine-role: worker
      machine.openshift.io/cluster-api-machine-type: worker
  unhealthyConditions:
    - type: "Ready"
      timeout: "300s"
      status: "False"
    - type: "Ready"
      timeout: "300s"
      status: "Unknown"
  maxUnhealthy: "40%" #4
  nodeStartupTimeout: "10m" #5

Vediamo le righe più interessanti di questa definizione:

  • #1 Fornisce informazioni di base come il nome e lo spazio dei nomi.
  • #2: Definisce quali macchine monitorare in base alle etichette. In questo caso, prende di mira le macchine con ruolo e tipo impostati su “worker”.
  • #3: Elenca le condizioni che definiscono una macchina non integrata. Qui, una macchina è considerata non integrata se non è pronta (stato: “Falso” o stato: “Sconosciuto”) per più di 300 secondi.
  • #4: Imposta la percentuale massima di macchine autorizzate a essere non integre prima che la correzione si interrompa. Qui, è impostata sul 40%.
  • #5: Specifica per quanto tempo attendere che un nodo si unisca al cluster prima di considerarlo non integro. In questo esempio, è impostato su 10 minuti.

Per creare questo MachineHealthCheck, ti basterà salvare lo YAML in un file (ad esempio, machinehealthcheck-sample.yaml) ed eseguire il comando seguente:

oc create -f machinehealthcheck-sample.yaml

Limitazioni

Come indicato nella documentazione, ci sono delle considerazioni da fare prima di mettere in azione una risorsa come questa:

  • Solo i nodi che fanno parte di un MachineSet vengono ripristinate da una risorsa come questa.
  • Se il nodo di una macchina viene rimosso dal cluster manualmente, ad esempio, il MachineHealthCheck considera il nodo come unhealthy e lo ripristina immediatamente.
  • Se il nodo corrispondente di una macchina non risulta operativo nel cluster dopo il periodo indicato nel parametro nodeStartupTimeout, la macchina viene ripristinata automaticamente.

Post correlati

TheRedCode.it - Il mondo #tech a piccoli #bit

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Codemotion
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls
Logo di Improove
Logo del libro open source
Logo di NgRome
Logo de La Locanda del Tech
Logo di Tomorrow Devs
Logo di Coderful
Logo di VueSchool

Non perderti gli ultimi aggiornamenti, iscriviti a TheRedCode Digest!

La tecnologia corre, e tu devi correre più veloce per rimanere sempre sul pezzo! 🚀

Riceverai una volta al mese (o anche meno) con codici sconto per partecipare agli eventi del settore, quiz per vincere dei gadget e i recap degli articoli più interessanti pubblicati sul blog

Ci sto!

Vuoi diventare #tech content creator? 🖊️

Se vuoi raccontare la tua sul mondo #tech con dei post a tema o vuoi condividere la tua esperienza con la community, sei nel posto giusto! 😉

Manda una mail a collaborazioni[at]theredcode.it con la tua proposta e diventa la prossima penna del blog!

Ma sì, facciamolo!