Actualización de los hosts asignados como nodos de trabajo

Revisa los siguientes pasos para obtener la última versión de OpenShift Container Platform, el sistema operativo y los parches de seguridad para tus hosts asignados como nodos de trabajo a servicios de IBM Cloud habilitados para Satellite, como los clústeres.

Los clústeres de servicios, que constituyen la plataforma subyacente de todos los servicios de IBM Cloud, se crean mediante servicios como Code Engine o IBM Cloud Object Storage y son gestionados por IBM.

¿Qué ocurre con mis aplicaciones durante una actualización?
Si ejecuta apps como parte de un despliegue en nodos trabajadores que actualiza, las apps se replanifican en otros nodos trabajadores del clúster. Estos nodos de trabajo pueden pertenecer a un grupo de trabajo diferente o, si dispone de nodos de trabajo independientes, las aplicaciones pueden programarse en dichos nodos. Para evitar el tiempo de inactividad de la app, debe asegurarse de que tiene suficiente capacidad en el clúster para gestionar la carga de trabajo.
¿Cómo puedo controlar cuántos nodos de trabajo se desactivan a la vez durante una actualización o recarga?
Si necesita que todos los nodos trabajadores estén activos y en ejecución, considere adjuntar y asignar hosts adicionales al servicio. Puede añadir hosts adicionales a su ubicación temporalmente y, a continuación, eliminarlos cuando se complete la actualización.
Además, puede crear un Kubernetes ( ConfigMap ) que especifique el número máximo de nodos de trabajo que pueden estar indisponibles al mismo tiempo, por ejemplo, durante una actualización. Los nodos trabajadores se identifican mediante etiquetas de nodo trabajador. Puede utilizar las etiquetas proporcionadas por IBM o las etiquetas personalizadas que haya añadido al nodo trabajador.

Comprobación de la disponibilidad de una actualización de versión para hosts de nodo de trabajador

Puede comprobar si hay una actualización de versión disponible para un host asignado como nodo de trabajador a un servicio de IBM Cloud habilitado para Satellite utilizando la CLI de IBM Cloud o la consola de IBM Cloud.

Para revisar los cambios que se incluyen en cada actualización de versión, consulte Registro de cambio de versión para Red Hat OpenShift on IBM Cloud.

Comprobar si hay una actualización de versión disponible con la CLI de IBM Cloud

  1. Inicie sesión en IBM Cloud. Incluya la opción --sso si tiene una cuenta federada.
    ibmcloud login [--sso]
    
  2. Liste los clústeres de Satellite de su cuenta.
    ibmcloud ks cluster ls --provider satellite
    
  3. Liste los nodos de trabajador en el clúster cuya versión desee actualizar. En la salida, compruebe si hay un asterisco (*) con un mensaje que indique que hay disponible una actualización de versión.
    ibmcloud ks worker ls -c CLUSTER_NAME_OR_ID
    
    Salida de ejemplo
    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'
    

Comprobar si hay una actualización de versión disponible desde la consola de IBM Cloud

  1. Inicie sesión en la consola deSatellite.
  2. Pulse en la ubicación que tenga los hosts que desee actualizar.
  3. Pulse en la pestaña Hosts.
  4. En la lista de hosts, pulse en el enlace al Clúster del host que desee actualizar. Se abrirá una nueva pestaña con los detalles del clúster de Red Hat OpenShift on IBM Cloud.
  5. Pulse en la pestaña Nodos de trabajador.
  6. En la columna Versión, busca un icono de información que indique Update available al hacer clic en él. Si no hay ninguna actualización disponible, no habrá ningún icono.
  7. Determine si la actualización de versión es una actualización principal, menor o de parche.

Identificación de hosts de nodo trabajador

Determine si los hosts forman parte del plano de control, están asignados a un servicio gestionado o están conectados a la ubicación.

  1. Enumera los servidores de tu ubicación y anota sus ID. Los hosts de nodo trabajador no tienen infrastructure listados en la columna Cluster de la salida.

    ibmcloud sat host ls --location <location>
    

    Revise la salida de ejemplo.

    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. Liste los hosts actuales que están asignados como nodos de trabajo a su servicio de IBM Cloud habilitado para Satellite y tome nota de sus ID.

    ibmcloud ks worker ls -c <cluster_name_or_ID>
    

    Revise la salida de ejemplo.

    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    
    

Aplicar actualizaciones de versión a los hosts de nodo trabajador sin desconectarlos

Puede actualizar los hosts de nodo trabajador sin desconectarlos de la ubicación. También puedes realizar una actualización progresiva de los hosts de tus nodos de trabajo mediante una actualización por etapas ( ConfigMap ).

Antes de empezar

  • Verifique que todos los nodos trabajadores estén en buen estado.
  • Si está utilizando volúmenes de almacenamiento en bloque persistentes, debe desconectar estos volúmenes del nodo antes de iniciar las actualizaciones. Mueva los volúmenes persistentes a un nodo trabajador diferente que no requiera actualizaciones. A continuación, corone y drene la carga de trabajo del nodo trabajador para actualizarla con el mandato kubectl drain NODENAME. Si no puede mover los volúmenes de almacenamiento en bloque, utilice Aplicación de actualizaciones de versión a nodos trabajadores sustituyendo hosts.

La aplicación de actualizaciones en los nodos de trabajo puede provocar interrupciones en el servicio de sus aplicaciones y servicios. No realice ninguna acción en el host mientras se esté ejecutando el proceso de actualización. Durante el proceso de actualización, puede que un máximo del 20 % de todos tus nodos de trabajo no estén disponibles.

Aplicar actualizaciones de versión a los hosts de nodo trabajador de uno en uno

  1. Opcional: Conecte y asigne hosts adicionales al clúster de servicio para manejar la capacidad de cálculo mientras se actualizan los hosts existentes.

  2. Identifique los hosts de nodo trabajador. Los hosts de nodo trabajador no tienen infrastructure listados en la columna Cluster de la salida, sino que tienen el nombre del clúster.

  3. Actualice los nodos trabajadores individualmente ejecutando el mandato ibmcloud ks worker update.

    ibmcloud ks worker update -c CLUSTER_NAME_OR_ID --worker WORKER_ID
    
  4. Confirme que la actualización se ha completado revisando la versión de Kubernetes de los nodos trabajadores.

    kubectl get nodes
    

    Si la actualización ha fallado, debe aplicar actualizaciones de versión sustituyendo hosts.

Aplique actualizaciones de versión a los hosts de nodo trabajador con un ConfigMap

Puede desplegar actualizaciones en todos los hosts de nodo trabajador con un ConfigMap. Especifique qué nodos se deben actualizar utilizando etiquetas. También puede especificar

  1. Opcional: Conecte y asigne hosts adicionales al clúster de servicio para manejar la capacidad de cálculo mientras se actualizan los hosts existentes.

  2. Identifique los hosts de nodo trabajador. Los hosts de nodo trabajador no se listan como Infrastructure.

  3. Vea las etiquetas de un nodo trabajador. Encontrará las etiquetas de los nodos trabajadores en la sección Labels de la información de salida de la CLI. Cada etiqueta consta de un NodeSelectorKey y un NodeSelectorValue. Puede utilizar las etiquetas para especificar qué nodos de trabajador se deben actualizar.

    kubectl get nodes -o yaml
    

    Salida de ejemplo

    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 ConfigMap y define las reglas de indisponibilidad para tus nodos de trabajo. El siguiente ejemplo muestra dos comprobaciones, la defaultcheck.json y una plantilla de comprobación. Puede utilizar esta comprobación de ejemplo para definir reglas para todos los nodos trabajadores que no coincidan con ninguna de las comprobaciones que ha definido en ConfigMap (defaultcheck.json). Utilice la plantilla de comprobación para crear su propia comprobación. Para cada comprobación, para identificar un nodo trabajador, debe elegir una de las etiquetas de nodo trabajador que ha recuperado en el paso anterior.

    Para cada comprobación, solo puede seleccionar un valor para NodeSelectorKey y NodeSelectorValue. Define hasta 10 comprobaciones en un ConfigMap. Si añade más comprobaciones, se pasan por alto.

    Ejemplo

    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
    Opcional: El tiempo de espera, en segundos, hasta que finalice el vaciado. El drenaje de un nodo trabajador elimina de forma segura todos los pods existentes del nodo trabajador y replanifica los pods en otros nodos trabajadores del clúster. Los valores aceptados son enteros comprendidos entre 1 y 180. El valor predeterminado es 30.
    defaultcheck.json
    Cuando actualiza nodos trabajadores en hosts de Satellite, solo el 20% de los nodos trabajadores del clúster pueden no estar disponibles a la vez.
    MaxUnavailablePercentage
    El número máximo de nodos que pueden no estar disponibles para una clave de etiqueta y un valor especificados, especificado como un porcentaje. Un nodo trabajador no está disponible cuando está en proceso de despliegue, de recarga o de suministro. Los nodos trabajadores en cola están bloqueados para actualizarse si se supera cualquier porcentaje no disponible máximo definido.
    NodeSelectorKey
    La clave de etiqueta del nodo trabajador para el que desea definir una regla. Puede establecer reglas para las etiquetas predeterminadas proporcionadas por IBM, así como para las etiquetas de nodos trabajadores que haya creado.
    NodeSelectorValue
    El valor de etiqueta que debe tener el nodo trabajador para que se tenga en cuenta para la regla que defina.
  5. Cree el mapa de configuración en el clúster.

    kubectl apply -f <filepath/configmap.yaml>
    
  6. Comprueba que se haya creado el ConfigMap.

    kubectl get configmap --namespace kube-system
    
  7. Actualice los nodos trabajadores listándolos por ID.

    ibmcloud ks worker update --cluster <cluster_name_or_ID> --worker <worker_node1_ID> --worker <worker_node2_ID>
    
  8. Opcional: Comprueba los eventos que activa el servicio ConfigMap y los posibles errores de validación que se produzcan. Los sucesos se pueden revisar en la sección Events de la información de salida de la CLI.

    kubectl describe -n kube-system cm ibm-cluster-update-configuration
    
  9. Confirme que la actualización se ha completado revisando la versión de Kubernetes de los nodos trabajadores.

    kubectl get nodes
    

    Si la actualización ha fallado, debe aplicar actualizaciones de versión sustituyendo hosts.

  10. Verifique que no tiene nodos de trabajador duplicados. A veces, en las listas de los clústeres más antiguos pueden aparecer nodos de trabajador duplicados con el estado NotReady después de una actualización. Para eliminar los duplicados, consulte resolución de problemas.

Aplicación de actualizaciones de versión a nodos trabajadores mediante la sustitución de hosts

Los hosts conectados a una ubicación no se actualizan automáticamente. Para aplicar una actualización de versión, primero puede conectar y asignar nuevos hosts a su servicio IBM Cloud habilitado para Satellite y, a continuación, eliminar los hosts antiguos. También puede aplicar actualizaciones menores y de versión de parche en su lugar.

  1. Liste los hosts actuales y anote sus ID. Estos son los hosts que se deben eliminar después de conectar los hosts actualizados.

    ibmcloud ks worker ls -c <cluster_name_or_ID>
    

    Revise la salida de ejemplo.

    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. Conecte nuevos hosts a la ubicación de Satellite. El número de hosts que conecte debe coincidir con el número de hosts que desea actualizar.

  3. Asigne los hosts recién conectados al recurso de Satellite. Estos hosts reciben automáticamente la actualización cuando los asigna.

  4. Una vez que los nuevos hosts estén correctamente asignados al recurso Satellite, elimine y suprima los hosts antiguos que ha anotado anteriormente.

Actualización de hosts de nodo de trabajador en la consola de Red Hat OpenShift on IBM Cloud

Puede actualizar hosts de nodo de trabajador utilizando la consola de Red Hat OpenShift on IBM Cloud.

  1. Inicie sesión en la consola de IBM Cloud y pulse OpenShift > Clústeres.
  2. Pulse el clúster donde están asignados los hosts que desea actualizar y vaya a la página Nodos de trabajador.
  3. Seleccione cada uno de los hosts que desea actualizar. Después de seleccionar los hosts, aparecerá una opción Actualizar.
  4. Pulse Actualizar. En el recuadro de diálogo que aparece, vuelva a pulsar Actualizar. Aparece un mensaje que indica que la actualización se ha iniciado satisfactoriamente.
  5. Espere mientras se actualizan los hosts. El proceso de actualización de cada host se ha completado cuando el Estado del host vuelve a Normal y la nueva versión aparece listada en la columna Versión.

Determinar si la actualización de versión de nodo de trabajador es una actualización principal, menor o de parche

El proceso para actualizar un nodo trabajador es el mismo para todos los tipos de actualizaciones. Sin embargo, puede encontrar información sobre si la actualización es una actualización mayor, menor o de parche.

Para determinar el tipo de actualización que está disponible, compare las versiones actuales del nodo de trabajo con la última versión de worker node fix pack en Registro de cambios de Red Hat OpenShift versión. Las actualizaciones principales se indican con el primer dígito de la etiqueta de versión (4.x.x), las actualizaciones menores se indican con el segundo dígito (x.7.x) y las actualizaciones de parche se indican con los dígitos finales (x.x.23_1528_openshift). Para obtener más información sobre las actualizaciones de versión, consulte Información de versión y acciones de actualización.