Aggiornamento degli host assegnati come nodi di lavoro

Segui i passaggi riportati di seguito per ottenere le ultime versioni di OpenShift Container Platform, del sistema operativo e delle patch di sicurezza per i tuoi host assegnati come nodi di lavoro a servizi IBM Cloud abilitati per l' Satellite, come ad esempio i cluster.

I cluster di servizi, che costituiscono la piattaforma di base per tutti i servizi di IBM Cloud, vengono creati da servizi quali Code Engine o IBM Cloud Object Storage e sono gestiti da IBM.

Cosa succede alle mie app durante un aggiornamento?
Se esegui le applicazioni come parte di una distribuzione su nodi di lavoro che hai aggiornato, le applicazioni verranno ripianificate su altri nodi di lavoro nel cluster. Questi nodi di lavoro possono far parte di un pool di lavoro diverso oppure, se si dispone di nodi di lavoro autonomi, le applicazioni possono essere pianificate su tali nodi. Per evitare un periodo di inattività per la tua applicazione, devi assicurarti di disporre di capacità sufficiente nel cluster per sostenere il carico di lavoro.
Come posso controllare il numero di nodi di lavoro che vengono disattivati contemporaneamente durante un aggiornamento o un ricaricamento?
Se hai bisogno che tutti i tuoi nodi di lavoro siano attivi e in esecuzione, considera di collegare e assegnare ulteriori host al tuo servizio. È possibile aggiungere temporaneamente ulteriori host alla propria ubicazione e quindi rimuoverli una volta completato l'aggiornamento.
Inoltre, è possibile creare un file Kubernetes ConfigMap che specifichi il numero massimo di nodi di lavoro che possono risultare non disponibili contemporaneamente, ad esempio durante un aggiornamento. I nodi di lavoro vengono identificati dalle etichette del nodo di lavoro. Puoi utilizzare le etichette fornite da IBM oppure le etichette personalizzate che hai aggiunto al nodo di lavoro.

Verifica della disponibilità di un aggiornamento di versione per gli host del nodo di lavoro

È possibile verificare se è disponibile un aggiornamento di versione per un host assegnato come nodo di lavoro a un servizio IBM Cloud con funzionalità " Satellite " attivate, utilizzando la CLI di IBM Cloud o la console di IBM Cloud.

Per esaminare le modifiche incluse in ogni aggiornamento della versione, consulta il log delle modifiche della versione per Red Hat OpenShift on IBM Cloud.

Verifica se è disponibile un aggiornamento della versione con la CLI IBM Cloud

  1. Accedi a IBM Cloud. Se disponi di un account federato, seleziona l'opzione " --sso ".
    ibmcloud login [--sso]
    
  2. Elenca i cluster Satellite nel tuo account.
    ibmcloud ks cluster ls --provider satellite
    
  3. Elenca i nodi di lavoro nel cluster per cui vuoi aggiornare la versione. Nell'output, ricercare un asterisco * con un messaggio che indica che è disponibile un aggiornamento della versione.
    ibmcloud ks worker ls -c CLUSTER_NAME_OR_ID
    
    Output di esempio
    ID                Primary IP       Flavor   State    Status   Zone     Version   
    sat-worker-<ID>   <IP_address>     upi      normal   Ready    zone-1   4.5.35_1534_openshift*   
    * To update to 4.5.37_1537_openshift version, run 'ibmcloud ks worker replace'. Review and make any required version changes before you update: 'https://ibm.biz/upworker'
    

Verifica se un aggiornamento della versione è disponibile dalla console IBM Cloud

  1. Accedi alla consoleSatellite.
  2. Fare clic sull'ubicazione con gli host che si desidera aggiornare.
  3. Fai clic sulla scheda Hosts.
  4. Dall'elenco di host, fare clic sul collegamento al Cluster per l'host che si desidera aggiornare. Viene visualizzata una nuova scheda per i dettagli del cluster Red Hat OpenShift on IBM Cloud.
  5. Fai clic sulla scheda " Nodi di lavoro ".
  6. Nella colonna Versione, verificare la presenza di un'icona informativa che indichi Update available quando si fa clic sull'icona. Se non è disponibile alcun aggiornamento, non è presente alcuna icona.
  7. Determinare se l'aggiornamento della versione è un aggiornamento principale, secondario o patch.

Identificazione degli host del nodo di lavoro

Determinare se gli host fanno parte del piano di controllo, sono assegnati a un servizio gestito o sono collegati all'ubicazione.

  1. Elenca i tuoi host di posizione e prendi nota dei loro ID. Gli host del nodo di lavoro non hanno infrastructure elencati nella colonna Cluster dell'output.

    ibmcloud sat host ls --location <location>
    

    Esaminare l'output di esempio.

    Name           ID                     State      Status   Zone     Cluster          Worker ID                                              Worker IP   
    satdemo-cp1    0bc3b92f55968a230985   assigned   Ready    zone-1   infrastructure   sat-satdemocp1-2bda578e901b4047c6e48d766cd99bc11a45fddd   169.62.42.178   
    satdemo-cp2    999cd38c39ddffe4b672   assigned   Ready    zone-2   infrastructure   sat-satdemocp2-940134e69c2609c5421b2426a7640fa80569668d   169.62.42.183   
    satdemo-cp5    6ca4fd8fcad1fa622aa4   assigned   Ready    zone-3   infrastructure   sat-satdemocp5-d46581b509357ea4b429fddc38a18b155463bf1c   169.62.42.181   
    satdemo-cp4    1ac2b92f55968a333335   assigned   Ready    zone-1   satdemo-cluster  sat-satdemocp4-2bda578e901b4047c6e48d766cd99bc11a45fddd   169.62.42.180   
    satdemo-cp6    234cd56c78ddffe4b672   assigned   Ready    zone-2   satdemo-cluster  sat-satdemocp6-940134e69c2609c5421b2426a7640fa80569668d   169.62.42.179   
    satdemo-cp3    8fg4ff8faaa1fa622bb5   assigned   Ready    zone-3   satdemo-cluster  sat-satdemocp3-d46581b509357ea4b429fddc38a18b155463bf1c   169.62.42.182  
    
  2. Elenca i tuoi host correnti assegnati come nodi di lavoro al servizio Satellite-enabled IBM Cloud e prendi nota dei loro ID.

    ibmcloud ks worker ls -c <cluster_name_or_ID>
    

    Esaminare l'output di esempio.

    ID                                                        Primary IP     Flavor   State    Status   Zone        Version   
    sat-satellitei-5bd83963cdfedc7668c9040879c88113a134c4e7   10.241.0.4     upi      normal   Ready    us-east-2   4.7.55_1575_openshift   
    sat-satellitei-854beae4556401b5761e34ed849ba64c4b0a674c   10.241.128.4   upi      normal   Ready    us-east-1   4.7.55_1575_openshift   
    sat-satellitei-bf1fc9b135011d5c0d9d500855db6e489d15610b   10.241.64.4    upi      normal   Ready    us-east-3   4.7.55_1575_openshift    
    

Applica aggiornamenti della versione agli host del nodo di lavoro senza scollegarli

Puoi aggiornare i tuoi host del nodo di lavoro senza scollegarli dall'ubicazione. È inoltre possibile eseguire un aggiornamento graduale degli host dei nodi di lavoro tramite un' ConfigMap.

Prima di iniziare

  • Verifica che tutti i tuoi nodi di lavoro siano in uno stato integro.
  • Se si stanno utilizzando volumi di archiviazione blocchi permanenti, è necessario scollegare tali volumi dal nodo prima di avviare gli aggiornamenti. Sposta i volumi persistenti su un nodo di lavoro diverso che non richiede aggiornamenti. Quindi, cordonare e svuotare il carico di lavoro dal nodo di lavoro da aggiornare con il comando kubectl drain NODENAME. Se non puoi spostare i volumi di archiviazione blocchi, utilizza Applicazione degli aggiornamenti della versione ai nodi di lavoro sostituendo gli host.

L'applicazione degli aggiornamenti ai nodi di lavoro può causare tempi di inattività delle vostre applicazioni e dei vostri servizi. Non eseguire alcuna azione sull'host mentre è in esecuzione il processo di aggiornamento. Un massimo del 20% di tutti i tuoi nodi di lavoro può non essere disponibile durante il processo di aggiornamento.

Applicare gli aggiornamenti della versione agli host del nodo di lavoro uno alla volta

  1. Facoltativo: Collega e assegna gli host aggiuntivi al cluster di servizi per gestire la capacità di elaborazione mentre i tuoi host esistenti sono in fase di aggiornamento.

  2. Identifica i tuoi host del nodo di lavoro. Gli host dei nodi di lavoro non hanno infrastructure elencati nella colonna Cluster dell'output, ma hanno invece il nome del cluster.

  3. Aggiorna i tuoi nodi di lavoro singolarmente eseguendo il comando ibmcloud ks worker update.

    ibmcloud ks worker update -c CLUSTER_NAME_OR_ID --worker WORKER_ID
    
  4. Conferma che l'aggiornamento è stato completato controllando la versione Kubernetes dei tuoi nodi di lavoro.

    kubectl get nodes
    

    Se l'aggiornamento non è riuscito, è necessario applicare gli aggiornamenti della versione sostituendo gli host.

Applicare gli aggiornamenti della versione agli host del nodo di lavoro con una ConfigMap

Puoi eseguire il rollout degli aggiornamenti a tutti gli host del nodo di lavoro con una ConfigMap. Specificare quali nodi aggiornare utilizzando le etichette. È anche possibile specificare

  1. Facoltativo: Collega e assegna gli host aggiuntivi al cluster di servizi per gestire la capacità di elaborazione mentre i tuoi host esistenti sono in fase di aggiornamento.

  2. Identifica i tuoi host del nodo di lavoro. I tuoi host del nodo di lavoro non sono elencati come Infrastructure.

  3. Visualizza le etichette di un nodo di lavoro. Puoi trovare le etichette del nodo di lavoro nella sezione Labels del tuo output della CLI. Ogni etichetta è formata da un NodeSelectorKey e da un NodeSelectorValue. È possibile utilizzare le etichette per specificare quali nodi di lavoro aggiornare.

    kubectl get nodes -o yaml
    

    Output di esempio

    labels:
      arch: amd64
      beta.kubernetes.io/arch: amd64
      beta.kubernetes.io/instance-type: upi
      beta.kubernetes.io/os: linux
      failure-domain.beta.kubernetes.io/region: us-east
      failure-domain.beta.kubernetes.io/zone: us-east-2
      ibm-cloud.kubernetes.io/iaas-provider: upi
      ibm-cloud.kubernetes.io/internal-ip: 10.241.0.4
      ibm-cloud.kubernetes.io/machine-type: upi
      ibm-cloud.kubernetes.io/os: REDHAT_8_64
      ibm-cloud.kubernetes.io/region: us-east
      ibm-cloud.kubernetes.io/worker-id: sat-satellitei-5bd83963cdfedc7668c9040879c88113a134c4e7
      ibm-cloud.kubernetes.io/worker-pool-id: cbtljodw089nltg8k210-9a3f763
      ibm-cloud.kubernetes.io/worker-pool-name: default
      ibm-cloud.kubernetes.io/worker-version: 4.7.59_1583_openshift
      ibm-cloud.kubernetes.io/zone: us-east-2
      kubernetes.io/arch: amd64
      kubernetes.io/hostname: satellite-ibm-host-3
      kubernetes.io/os: linux
      node-role.kubernetes.io/master: ""
      node-role.kubernetes.io/worker: ""
      node.kubernetes.io/instance-type: upi
      node.openshift.io/os_id: rhel
      privateVLAN: "1"
      topology.kubernetes.io/region: us-east
      topology.kubernetes.io/zone: us-east-2
    
  4. Crea un gruppo di disponibilità ( ConfigMap ) e definisci le regole di indisponibilità per i tuoi nodi di lavoro. L'esempio seguente mostra due assegni: l' defaultcheck.json e un modello di assegno. È possibile utilizzare questo controllo di esempio per definire le regole per tutti i nodi di lavoro che non corrispondono a nessuno dei controlli definiti in ConfigMap (defaultcheck.json). Utilizzare il modello di controllo per creare il proprio controllo. Per ogni controllo, per identificare un nodo di lavoro, devi scegliere una delle etichette del nodo di lavoro che hai richiamato nel passo precedente.

    Per ogni controllo, è possibile impostare un solo valore per NodeSelectorKey e NodeSelectorValue. È possibile definire fino a 10 controlli in un file “ ConfigMap ”. Se aggiungi altri controlli, verranno ignorati.

    Esempio

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ibm-cluster-update-configuration
      namespace: kube-system
    data:
      drain_timeout_seconds: "120"
      defaultcheck.json: |
        {
          "MaxUnavailablePercentage": 20
        }
      <check_name>: |
        {
          "MaxUnavailablePercentage": <value_in_percentage>,
          "NodeSelectorKey": "<node_selector_key>",
          "NodeSelectorValue": "<node_selector_value>"
        }
    
    drain_timeout_seconds
    Facoltativo: il timeout, espresso in secondi, da attendere affinché il drenaggio venga completato. Lo svuotamento in sicurezza di un nodo di lavoro rimuove tutti i pod esistenti dal nodo di lavoro e ripianifica i pod su altri nodi di lavoro nel cluster. I valori accettati sono numeri interi compresi tra 1 e 180. Il valore predefinito è 30.
    defaultcheck.json
    Quando si aggiornano i nodi di lavoro negli host Satellite, solo il 20% dei nodi di lavoro nel cluster può non essere disponibile alla volta.
    MaxUnavailablePercentage
    Il numero massimo di nodi che possono essere non disponibili per un valore e una chiave etichetta specificati, espresso come percentuale. Un nodo di lavoro è non disponibile durante il processo di distribuzione, ricaricamento o provisioning. I nodi di lavoro in coda sono bloccati dall'essere aggiornati se superano le percentuali di non disponibilità massime definite.
    NodeSelectorKey
    La chiave di etichetta del nodo di lavoro per il quale vuoi impostare una regola. Puoi impostare regole per le etichette predefinite fornite da IBM, così come per le etichette del nodo di lavoro che hai creato.
    NodeSelectorValue
    Il valore dell'etichetta che deve essere tenuto in considerazione dal nodo di lavoro per la regola che hai definito.
  5. Crea l' ConfigMap e nel tuo cluster.

    kubectl apply -f <filepath/configmap.yaml>
    
  6. Verificare che sia stato creato il file “ ConfigMap ”.

    kubectl get configmap --namespace kube-system
    
  7. Aggiorna i nodi di lavoro elencandoli per ID.

    ibmcloud ks worker update --cluster <cluster_name_or_ID> --worker <worker_node1_ID> --worker <worker_node2_ID>
    
  8. Facoltativo: verificare gli eventi generati dall' ConfigMap e e gli eventuali errori di convalida che si verificano. Gli eventi possono essere esaminati nella sezione Events dell'output della tua CLI.

    kubectl describe -n kube-system cm ibm-cluster-update-configuration
    
  9. Conferma che l'aggiornamento è stato completato controllando la versione Kubernetes dei tuoi nodi di lavoro.

    kubectl get nodes
    

    Se l'aggiornamento non è riuscito, è necessario applicare gli aggiornamenti della versione sostituendo gli host.

  10. Verifica di non avere nodi di lavoro duplicati. A volte, nei cluster più datati potrebbero essere presenti nodi di lavoro duplicati con uno NotReady stato dopo un aggiornamento. Per rimuovere i duplicati, consulta risoluzione dei problemi.

Applicazione degli aggiornamenti della versione ai nodi di lavoro sostituendo gli host

Gli host collegati a un'ubicazione non vengono aggiornati automaticamente. Per applicare un aggiornamento di versione, è possibile innanzitutto collegare e assegnare nuovi host al servizio IBM Cloud abilitato per l' Satellite, quindi rimuovere i vecchi host. È anche possibile applicare aggiornamenti minori e patch in loco.

  1. Elenca i tuoi host correnti e prendi nota dei loro ID. Questi sono gli host da rimuovere dopo aver collegato gli host aggiornati.

    ibmcloud ks worker ls -c <cluster_name_or_ID>
    

    Esaminare l'output di esempio.

    ID                                                        Primary IP      Flavor   State    Status   Zone     Version   
    sat-satliberty-5b4c7f3a7bfc14cf58cbb14ad5c08429475274fe   208.43.36.202   upi      normal   Ready    zone-1   4.7.19_1525_openshift*   
    
  2. Allega nuovi host all'ubicazione Satellite. Il numero di host che si collegano deve corrispondere al numero di host che si desidera aggiornare.

  3. Assegna gli host appena collegati alla tua risorsa Satellite. Questi host ricevono automaticamente l'aggiornamento quando li si assegna.

  4. Dopo che i nuovi host sono correttamente assegnati alla tua risorsa Satellite, rimuovi ed elimina i vecchi host che hai precedentemente notato.

Aggiornamento degli host del nodo di lavoro nella console Red Hat OpenShift on IBM Cloud

È possibile aggiornare gli host dei nodi di lavoro utilizzando la console Red Hat OpenShift on IBM Cloud.

  1. Accedi alla console IBM Cloud e fai clic su OpenShift > Clusters.
  2. Fai clic sul cluster in cui sono assegnati gli host che vuoi aggiornare e passa alla pagina Nodi di lavoro.
  3. Selezionare ogni host che si desidera aggiornare. Dopo aver selezionato gli host, viene visualizzata un'opzione Aggiorna.
  4. Fai clic su Aggiorna. Nella finestra di dialogo che viene visualizzata, fare nuovamente clic su Aggiorna. Viene visualizzato un messaggio che indica che l'aggiornamento è stato avviato correttamente.
  5. Attendere l'aggiornamento degli host. Il processo di aggiornamento per ciascun host viene completato quando lo stato dell'host ritorna a Normale e la nuova versione viene elencata nella colonna Versione.

Determinazione se l'aggiornamento della versione del nodo di lavoro è un aggiornamento principale, secondario o patch

Il processo di aggiornamento di un nodo di lavoro è lo stesso per tutti gli aggiornamenti. Tuttavia, è possibile trovare informazioni sul fatto che l'aggiornamento sia maggiore, minore o patch.

Per determinare il tipo di aggiornamento disponibile, confronta le tue versioni del nodo di lavoro correnti con la versione worker node fix pack più recente nel log di modifica della versioneRed Hat OpenShift. Gli aggiornamenti principali sono indicati dalla prima cifra nell'etichetta di versione (4.x.x), gli aggiornamenti secondari sono indicati dalla seconda cifra (x.7.x) e gli aggiornamenti delle patch sono indicati dalle cifre finali (x.x.23_1528_openshift). Per ulteriori informazioni sugli aggiornamenti della versione, consultare Informazioni sulla versione e azioni di aggiornamento.