Riavvio dei nodi di lavoro
Scopri come riavviare un nodo di lavoro in un cluster Kubernetes creato utilizzando Kubernetes Engine (OKE).
È possibile eseguire il ciclo dei nodi solo per riavviare i nodi di lavoro quando si utilizzano cluster avanzati. Vedere Utilizzo di cluster e cluster di base avanzati.
È possibile eseguire il ciclo dei nodi per riavviare i nodi sia con le forme delle virtual machine che con quelle Bare Metal.
È possibile eseguire il ciclo dei nodi per riavviare sia i nodi gestiti che i nodi autogestiti.
A volte, il reboot di un nodo di lavoro è il modo migliore per risolvere un problema con l'istanza di computazione che ospita il nodo di lavoro. Il riavvio dell'alimentazione di un nodo di lavoro ciclica l'istanza di computazione, che, ad esempio, cancellerebbe tutte le regole negli iptables dell'istanza di computazione. Nel caso di istanze di computazione GPU Bare Metal, il reboot di un nodo di lavoro potrebbe risolvere problemi quali:
- Riduzione delle prestazioni lavorative o limitazione termica, causata da temperature di memoria GPU elevate.
- Report inferiori al numero previsto di GPU.
- errori NVLink, indicati da NVIDIA Fabric Manager che non riesce ad avviare o da job NCCL che non vengono eseguiti.
Utilizzando Kubernetes Engine, puoi:
- Riavviare nodi gestiti specifici.
- Riavviare nodi autogestiti specifici.
Quando si esegue il ciclo e il riavvio di un nodo di lavoro, Kubernetes Engine collega automaticamente il nodo di lavoro e lo scarica prima della sua chiusura. Viene quindi riavviato l'istanza di computazione che ospita il nodo di lavoro. Il comando di arresto inviato all'istanza di computazione che ospita il nodo di lavoro dipende dal numero di minuti specificato come periodo di tolleranza di rimozione (lunghezza di tempo per consentire il collegamento e lo svuotamento dei nodi di lavoro):
- Se si specifica un periodo di tolleranza di rimozione pari a zero minuti, all'istanza di computazione viene inviato un comando RESET. L'istanza viene immediatamente spenta e quindi riaccesa.
- Se si specifica un periodo di tolleranza di rimozione maggiore di zero minuti, all'istanza di computazione viene inviato un comando SOFTRESET. Dopo aver atteso 15 minuti per l'arresto del sistema operativi, l'istanza viene disattivata e poi riattiva.
Tenere presente che l'istanza stessa non viene interrotta e mantiene lo stesso OCID e lo stesso indirizzo di rete.
Tenere presenti le considerazioni riportate di seguito quando si esegue il ciclismo per riavviare i nodi di lavoro.
- È necessario eseguire il ciclo e il riavvio dei nodi gestiti singolarmente. Non è possibile selezionare un pool di nodi gestiti e un ciclo ed eseguire il reboot di tutti i nodi gestiti al suo interno.
- È possibile utilizzare la console, l'interfaccia CLI o l'API per eseguire il ciclo e il reboot dei nodi gestiti.
- È necessario utilizzare la CLI o l'API per eseguire il ciclo e il riavvio dei nodi autogestiti. Non è possibile utilizzare la console per eseguire il ciclo e il reboot dei nodi autogestiti.
Cordonatura e drenaggio durante il ciclismo e il riavvio dei nodi
Quando si seleziona un singolo nodo di lavoro (un nodo gestito o un nodo autogestito) e si specifica che si desidera eseguire il ciclo e il riavvio del nodo, è possibile specificare le opzioni Cordon e drenaggio. Nel caso di nodi gestiti, le opzioni Cordon e drenaggio specificate per un nodo gestito sostituiscono le opzioni Cordon e drenaggio specificate per il pool di nodi.
Per ulteriori informazioni, vedere Registrazione e rimozione dei nodi gestiti prima dello spegnimento o della cessazione
Riavvio dei nodi di lavoro
Per riavviare un nodo gestito specifico:
- Apri il menu di navigazione e seleziona Servizi per sviluppatori. In Container e artifact selezionare Cluster Kubernetes (OKE).
- Selezionare il compartimento contenente il cluster.
- Nella pagina Cluster fare clic sul nome del cluster contenente il nodo di lavoro che si desidera riavviare.
- In Risorse, fare clic su Pool di nodi, quindi fare clic sul nome del pool di nodi contenente il nodo di lavoro che si desidera riavviare.
-
Selezionare Nodo ciclo dal menu Azioni accanto al nodo che si desidera riavviare.
- Nella finestra di dialogo Nodo ciclo:
- Selezionare Nodo di riavvio dall'elenco Opzioni di ciclo.
-
Specificare quando e come collegare e scollegare il nodo di lavoro prima di eseguire l'azione di riavvio, specificando:
- Periodo di tolleranza rimozione (min): il periodo di tempo necessario per consentire il collegamento e l'estrazione del nodo di lavoro prima di eseguire l'azione. Accettare l'impostazione predefinita (60 minuti) o specificare un'alternativa. Ad esempio, è possibile consentire 30 minuti per collegare un nodo di lavoro ed eliminarlo dai relativi carichi di lavoro. Per eseguire l'azione immediatamente, senza cordonare e svuotare il nodo di lavoro, specificare 0 minuti.
- Azione Forza dopo il periodo di tolleranza: indica se eseguire l'azione alla fine del periodo di tolleranza di rimozione, anche se il nodo di lavoro non è stato collegato e scaricato correttamente. Per impostazione predefinita, questa opzione non è selezionata.
Vedere Cordonizzazione e rimozione dei nodi gestiti prima dell'arresto o della cessazione.
- Fare clic su Nodo ciclo per avviare l'operazione di riavvio.
-
Monitorare lo stato di avanzamento dell'operazione visualizzando lo stato della richiesta di lavoro associata nella pagina Dettagli cluster (vedere Recupero dei dettagli della richiesta di lavoro).
Per riavviare un nodo gestito specifico o un nodo autogestito
Per eseguire il reboot di un nodo gestito specifico o di un nodo autogestito, utilizzare il comando oci ce cluster reboot-cluster-node e i parametri richiesti:
oci ce cluster reboot-cluster-node --cluster-id <cluster-ocid> --node-id <instance-ocid> [OPTIONS]
Ad esempio:
oci ce cluster reboot-cluster-node --cluster-id ocid1.cluster.oc1.iad.aaaaaaaaaf______jrd --node-id ocid1.instance.oc1.iad.anu__flq --node-eviction-settings "{\"evictionGraceDuration\": \"PT0M\",\"isForceActionAfterGraceDuration\": true}"
Per riavviare un nodo gestito specifico utilizzando l'API OCI, effettuare le operazioni riportate di seguito.
Eseguire l'operazione RebootClusterNode per riavviare un nodo gestito specifico utilizzando l'API OCI.
Per riavviare un nodo gestito o un nodo autogestito utilizzando l'API Kubernetes, effettuare le operazioni riportate di seguito.
Nota
Per utilizzare l'API Kubernetes per riavviare un nodo gestito o un nodo autogestito che utilizza un'immagine personalizzata (anziché un'immagine di piattaforma o un'immagine OKE), un criterio IAM deve fornire l'accesso all'immagine personalizzata. Se tale criterio non esiste già, creare un criterio con la seguente istruzione:
ALLOW any-user to read instance-images in TENANCY where request.principal.type = 'cluster'
Vedere Configurazione dei criteri per la creazione e la distribuzione del cluster.
- Creare un file yaml per definire una risorsa personalizzata
NodeOperationRule
, simile al seguente:apiVersion: oci.oraclecloud.com/v1beta1 kind: NodeOperationRule metadata: name: <rule-name> spec: actions: - "reboot" nodeSelector: matchTriggerLabel: oke.oraclecloud.com/node_operation: "<value>" matchCustomLabels: <custom-key>: "<value>" maxParallelism: <n> nodeEvictionSettings: evictionGracePeriod: <number-of-minutes> isForceActionAfterGraceDuration: <true|false>
dove:
name: <rule-name>
specifica il nome scelto per la risorsa personalizzataNodeOperationRule
. Ad esempio,name: my-reboot-rule
oke.oraclecloud.com/node_operation: "<value>"
specifica un valore scelto per la chiave etichettaoke.oraclecloud.com/node_operation
. Ai nodi che si desidera riavviare deve essere collegata questa coppia chiave-valore etichetta. Ad esempio:matchTriggerLabel: oke.oraclecloud.com/node_operation: "my-reboot-value"
Tenere presente che il valore specificato per la chiave etichetta
oke.oraclecloud.com/node_operation
deve essere conforme ai requisiti dell'argomento Etichette e selettori nella documentazione di Kubernetes. Sono supportati solo i requisiti basati sulla parità Kubernetes.matchCustomLabels
specifica facoltativamente un'etichetta personalizzata con una coppia chiave-valore scelta nel formato<custom-key>: "<value>"
. Facoltativamente, è possibile specificare una coppia chiave-valore etichetta personalizzata per soddisfare il proprio caso d'uso specifico. Ad esempio:matchCustomLabels: deployment: "green"
La coppia chiave-valore dell'etichetta personalizzata specificata deve essere conforme ai requisiti dell'argomento Etichette e selettori nella documentazione di Kubernetes. Sono supportati solo i requisiti basati sulla parità Kubernetes.
Tenere presente che se si specifica una coppia etichetta personalizzata chiave-valore nel file manifesto, i nodi vengono riavviati solo se dispongono di questa etichetta personalizzata e dell'etichetta
oke.oraclecloud.com/node_operation: "<value>"
.maxParallelism: <n>
specifica il numero di nodi di lavoro da riavviare in parallelo, fino a un massimo di 20.evictionGracePeriod: <number-of-minutes>
specifica il periodo di tempo necessario per consentire il cordonamento e il drenaggio dei nodi di lavoro prima del reboot. Accettare l'impostazione predefinita (60 minuti) o specificare un'alternativa. Ad esempio, è possibile consentire 30 minuti per collegare i nodi di lavoro e scaricare i carichi di lavoro. Per riavviare immediatamente i nodi di lavoro, senza collegarli e svuotarli, specificare 0 minuti.isForceActionAfterGraceDuration: <true|false>
specifica se riavviare i nodi di lavoro alla fine del periodo di tolleranza di rimozione, anche se non sono stati collegati e scaricati correttamente. Se non specificato, il valore predefinito èfalse
.
Ad esempio:
apiVersion: oci.oraclecloud.com/v1beta1 kind: NodeOperationRule metadata: name: my-reboot-rule spec: actions: - "reboot" nodeSelector: matchTriggerLabel: oke.oraclecloud.com/node_operation: "my-reboot-value" matchCustomLabels: deployment: "green" maxParallelism: 2 nodeEvictionSettings: evictionGracePeriod: 300 isForceActionAfterGraceDuration: true
-
Utilizzare kubectl per applicare il file yaml al cluster immettendo:
kubectl apply -f <filename>.yaml
-
Utilizzare kubectl per confermare che la risorsa personalizzata NodeOperationRule è stata creata correttamente immettendo:
kubectl get nor
-
Utilizzare kubectl per aggiungere un'etichetta al nodo che specifica il valore per la chiave etichetta
oke.oraclecloud.com/node_operation
immettendo:kubectl label node <node-name> oke.oraclecloud.com/node_operation=<value>
Ad esempio:
kubectl label node 10.0.10.53 oke.oraclecloud.com/node_operation=my-reboot-value
- Se nel file manifesto è stato incluso un elemento
matchCustomLabels
per specificare una coppia chiave-valore etichetta personalizzata, utilizzare kubectl per aggiungere un'etichetta al nodo che specifica la coppia chiave-valore immettendo:kubectl label node <node-name> <custom-key>=<value>
Ad esempio:
kubectl label node 10.0.10.53 deployment=green
(facoltativo) È possibile visualizzare l'azione di riavvio del nodo in corso immettendo:
Ad esempio:kubectl describe nor <rule-name>
Output di esempio:kubectl describe nor my-reboot-rule
Name: my-reboot-rule Namespace: Labels: <none> Annotations: <none> API Version: oci.oraclecloud.com/v1beta1 Kind: NodeOperationRule Metadata: Creation Timestamp: 2025-02-11T00:11:11Z Finalizers: nodeoperationrule.oci.oraclecloud.com/finalizers Generation: 1 Resource Version: 244259806 UID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Spec: Actions: reboot Max Parallelism: 2 Node Eviction Settings: Eviction Grace Period: 300 Is Force Action After Grace Duration: true Node Selector: Match Trigger Label: oke.oraclecloud.com/node_operation: my-reboot-value Match Custom Label: deployment: green Status: Back Off Nodes: Canceled Nodes: In Progress Nodes: Node Name: 10.0.10.53 Work Request Id: ocid1.clustersworkrequest.oc1.phx.aaaa______jda Pending Nodes: Succeeded Nodes: Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal StartedNodeOperation 1m NodeOperationRule Started node operation on node with work request ID: 10.0.10.105: ocid1.clustersworkrequest.oc1.phx.aaaa______jda ```
- Creare un file yaml per definire una risorsa personalizzata