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
- Inicie sesión en IBM Cloud. Incluya la opción
--ssosi tiene una cuenta federada.ibmcloud login [--sso] - Liste los clústeres de Satellite de su cuenta.
ibmcloud ks cluster ls --provider satellite - 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.
Salida de ejemploibmcloud ks worker ls -c CLUSTER_NAME_OR_IDID 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
- Inicie sesión en la consola deSatellite.
- Pulse en la ubicación que tenga los hosts que desee actualizar.
- Pulse en la pestaña Hosts.
- 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.
- Pulse en la pestaña Nodos de trabajador.
- En la columna Versión, busca un icono de información que indique
Update availableal hacer clic en él. Si no hay ninguna actualización disponible, no habrá ningún icono. - 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.
-
Enumera los servidores de tu ubicación y anota sus ID. Los hosts de nodo trabajador no tienen
infrastructurelistados en la columnaClusterde 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 -
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
-
Opcional: Conecte y asigne hosts adicionales al clúster de servicio para manejar la capacidad de cálculo mientras se actualizan los hosts existentes.
-
Identifique los hosts de nodo trabajador. Los hosts de nodo trabajador no tienen
infrastructurelistados en la columnaClusterde la salida, sino que tienen el nombre del clúster. -
Actualice los nodos trabajadores individualmente ejecutando el mandato
ibmcloud ks worker update.ibmcloud ks worker update -c CLUSTER_NAME_OR_ID --worker WORKER_ID -
Confirme que la actualización se ha completado revisando la versión de Kubernetes de los nodos trabajadores.
kubectl get nodesSi 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
-
Opcional: Conecte y asigne hosts adicionales al clúster de servicio para manejar la capacidad de cálculo mientras se actualizan los hosts existentes.
-
Identifique los hosts de nodo trabajador. Los hosts de nodo trabajador no se listan como
Infrastructure. -
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
NodeSelectorKeyy unNodeSelectorValue. Puede utilizar las etiquetas para especificar qué nodos de trabajador se deben actualizar.kubectl get nodes -o yamlSalida 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 -
Crea un ConfigMap y define las reglas de indisponibilidad para tus nodos de trabajo. El siguiente ejemplo muestra dos comprobaciones, la
defaultcheck.jsony 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
NodeSelectorKeyyNodeSelectorValue. 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.
-
Cree el mapa de configuración en el clúster.
kubectl apply -f <filepath/configmap.yaml> -
Comprueba que se haya creado el ConfigMap.
kubectl get configmap --namespace kube-system -
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> -
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 -
Confirme que la actualización se ha completado revisando la versión de Kubernetes de los nodos trabajadores.
kubectl get nodesSi la actualización ha fallado, debe aplicar actualizaciones de versión sustituyendo hosts.
-
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
NotReadydespué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.
-
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* -
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.
-
Asigne los hosts recién conectados al recurso de Satellite. Estos hosts reciben automáticamente la actualización cuando los asigna.
-
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.
- Inicie sesión en la consola de IBM Cloud y pulse OpenShift > Clústeres.
- Pulse el clúster donde están asignados los hosts que desea actualizar y vaya a la página Nodos de trabajador.
- Seleccione cada uno de los hosts que desea actualizar. Después de seleccionar los hosts, aparecerá una opción Actualizar.
- 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.
- 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.