Realización de una actualización de nodo de trabajador in situ mediante el ciclo de nodos en un pool de nodos existente

Descubra cómo actualizar las propiedades de los nodos de trabajador en un pool de nodos cambiando las propiedades del pool de nodos existente y, a continuación, ciclando los nodos mediante Container Engine for Kubernetes (OKE).

Nota

Solo puede realizar un ciclo de nodos para realizar una actualización de nodo de trabajador in situ al utilizar clusters mejorados. Consulte Working with Enhanced Clusters and Basic Clusters.

No puede realizar un ciclo de nodos con unidades con hardware dedicado. En su lugar, actualice los nodos con unidades con hardware dedicado sustituyendo manualmente los nodos existentes o el pool de nodos existente. Consulte Realización de una actualización de nodo de trabajador local mediante la sustitución manual de nodos en un pool de nodos existente y Realización de una actualización de nodo de trabajador externa mediante la sustitución de un pool de nodos existente por un nuevo pool de nodos.

Esta sección sólo se aplica a los nodos gestionados.

Puede actualizar las propiedades de los nodos de trabajador en un pool de nodos cambiando las propiedades del pool de nodos existente y, a continuación, desplazando los nodos. Antes de realizar el ciclo de los nodos, puede especificar un número máximo permitido de nodos nuevos que se pueden crear durante la operación de actualización y un número máximo permitido de nodos que pueden no estar disponibles.

Al realizar un ciclo de los nodos, Container Engine for Kubernetes sustituye automáticamente todos los nodos de trabajador existentes por nuevos nodos de trabajador que tengan las propiedades actualizadas especificadas.

Al realizar el ciclo de nodos, los cordones de Container Engine for Kubernetes, drenan y terminan los nodos según las opciones de Cordon and dren del pool de nodos.

Equilibrio entre la disponibilidad y el costo del servicio al realizar ciclos de nodos

Container Engine for Kubernetes utiliza dos estrategias al ciclar nodos:

  • Crear nuevos nodos (adicionales) y, a continuación, eliminar los nodos existentes: Container Engine for Kubernetes agrega un nodo (o nodos) adicional al pool de nodos con propiedades actualizadas. Cuando el nodo adicional está activo, Container Engine for Kubernetes conecta un nodo existente, vacía el nodo y elimina el nodo del pool de nodos. Esta estrategia mantiene la disponibilidad del servicio, pero cuesta más.
  • Elimine los nodos existentes y, a continuación, cree nuevos nodos: Container Engine for Kubernetes conecta un nodo (o nodos) existente para que no esté disponible, borra el nodo y elimina el nodo del pool de nodos. Cuando se elimina el nodo, Container Engine for Kubernetes agrega un nuevo nodo al pool de nodos para sustituir el nodo que se ha eliminado. Esta estrategia cuesta menos, pero puede poner en peligro la disponibilidad del servicio.

Para adaptar el comportamiento de Container Engine for Kubernetes a sus propios requisitos de disponibilidad y costo del servicio, puede controlar y equilibrar las dos estrategias especificando:

  • El número de nodos adicionales que se permiten temporalmente durante la operación de actualización (denominado maxSurge). Cuanto mayor sea el número de nodos adicionales que permita, más nodos Container Engine for Kubernetes se pueden actualizar en paralelo sin comprometer la disponibilidad del servicio. Sin embargo, cuanto mayor sea el número de nodos adicionales que permita, mayor será el costo.
  • El número de nodos que pueden no estar disponibles durante la operación de actualización (denominado maxUnavailable). Cuanto mayor sea el número de nodos que permite que no estén disponibles, más nodos Container Engine for Kubernetes se pueden actualizar en paralelo sin aumentar los costos. Sin embargo, cuanto mayor sea el número de nodos que permite que no estén disponibles, mayor será la disponibilidad del servicio.

En ambos casos, puede especificar el número permitido de nodos como un entero o como un porcentaje del número de nodos que se muestra en la propiedad Recuento de nodos del pool de nodos en la consola (la propiedad Tamaño del pool de nodos en la API). Si no especifica explícitamente los números permitidos para nodos adicionales (maxSurge) y nodos no disponibles (maxUnavailable), se aplican los siguientes valores predeterminados:

  • Si no especifica un valor para maxSurge o maxUnavailable, maxSurge se define por defecto en 1 y maxUnavailable se define por defecto en 0.
  • Si sólo especifica un valor para maxSurge, maxUnavailable se establece por defecto en 0.
  • Si sólo especifica un valor para maxUnavailable, maxSurge se establece por defecto en 1.

No puede especificar 0 como el número permitido para nodos adicionales (maxSurge) y nodos no disponibles (maxUnavailable).

Tenga en cuenta lo siguiente:

  • Al final de la operación de actualización, el número de nodos del pool de nodos vuelve al número especificado por la propiedad Node count del pool de nodos que se muestra en la consola (la propiedad Size del pool de nodos en la API).
  • Si especifica un valor para maxSurge durante la operación de actualización, su arrendamiento debe tener una cuota suficiente para el número de nodos adicionales que especifique.
  • Si especifica un valor para maxUnavailable durante la operación de actualización, pero el pool de nodos no puede hacer que ese número de nodos no esté disponible (por ejemplo, debido a un presupuesto de interrupción de pod), la operación de actualización falla.
  • Si introduce un porcentaje como valor de maxSurge o maxUnavailable, Container Engine for Kubernetes redondea al alza el porcentaje al entero más cercano al calcular el número permitido de nodos.
  • Si ha utilizado kubectl para actualizar los nodos de trabajador directamente (por ejemplo, para aplicar una etiqueta personalizada a un nodo), estos cambios se pierden cuando Container Engine for Kubernetes ciclos los nodos.
  • Al actualizar pools de nodos grandes, tenga en cuenta que los valores que especifique para maxSurge y maxUnavailable pueden generar tiempos de ciclo inaceptablemente largos. Por ejemplo, si especifica 1 como valor para maxSurge al sincronizar los nodos de un pool de nodos con 1000 nodos, Container Engine for Kubernetes puede tardar varios días en sincronizar todos los nodos del pool de nodos. Si la operación de sincronización de nodos no finaliza dentro de los 30 días, el estado de la solicitud de trabajo asociada se establece en Con fallos. Ejecute otra solicitud de sincronización de nodo para reanudar la operación.

Uso de la consola

Para realizar una actualización "in situ" de un pool de nodos en un cluster mediante el ciclo de nodos:

  1. Abra el menú de navegación y haga clic en Servicios para desarrolladores. En Contenedores y artefactos, haga clic en Clusters de Kubernetes (OKE).
  2. Seleccione un compartimento en el que tenga permiso para trabajar.
  3. En la página Lista de clusters, haga clic en el nombre del cluster en el que desea actualizar las propiedades del nodo de trabajador.
  4. En la página Cluster, muestre el separador Pools de nodos y haga clic en el nombre del pool de nodos en el que desea actualizar las propiedades del nodo de trabajador.

  5. En la página Pool de nodos, especifique las propiedades necesarias para los nodos de trabajador.

    Tenga en cuenta que si cambia la versión de Kubernetes, la versión que especifique debe ser compatible con la versión que se está ejecutando en los nodos de plano de control. Consulte Actualización de clusters a versiones más recientes de Kubernetes.

  6. Haga clic en Guardar cambios para guardar el cambio.

    Ahora se desplazan los nodos para suprimir automáticamente los nodos de trabajador existentes e iniciar nuevos nodos de trabajador con las propiedades especificadas.

    Recomendado: utilice los presupuestos de interrupción de pod según corresponda para su aplicación a fin de garantizar que haya un número suficiente de pods de réplica en ejecución durante la operación de actualización. Para obtener más información, consulte Especificación de un presupuesto de interrupción para la aplicación en la documentación de Kubernetes.

  7. En la página Pool de nodos, haga clic en Ciclo de nodos.

  8. En el cuadro de diálogo Nodos cíclicos:
    1. Controle el número de nodos que se van a actualizar en paralelo y equilibre la disponibilidad y el costo del servicio especificando:
      • Número máximo o porcentaje de nodos adicionales (maxSurge): número máximo de nodos adicionales que se permiten temporalmente en el pool de nodos durante la operación de actualización (expresado como un entero o como un porcentaje). Los nodos adicionales son nodos por encima del número especificado en la propiedad Node count del pool de nodos. Si especifica un entero para el número de nodos adicionales, no especifique un número mayor que el valor de Recuento de nodos.
      • Número máximo o porcentaje de nodos no disponibles (maxUnavailable): número máximo de nodos para permitir que no estén disponibles en el pool de nodos durante la operación de actualización (expresado como un entero o como un porcentaje). Si especifica un entero para el número de nodos no disponibles, no especifique un número mayor que el valor de Recuento de nodos.

      Consulte Disponibilidad y costo del servicio de equilibrio al realizar ciclos en nodos.

    2. Haga clic en Ciclo de nodos para iniciar la operación de actualización.
  9. Supervise el progreso de la operación de actualización visualizando el estado de la solicitud de trabajo asociada (consulte Obtención de detalles de solicitud de trabajo).

Uso de la CLI

Para obtener información sobre el uso de la CLI, consulte Interfaz de línea de comandos (CLI). Para obtener una lista completa de los indicadores y las opciones disponibles para los comandos de la CLI, consulte Referencia de la línea de comandos.

Para realizar una actualización de nodo de trabajador "in situ" mediante nodos de ciclo

Especifique la propiedad de nodo de trabajador del pool de nodos que desea cambiar. Incluya el parámetro --node-pool-cycling-details en el comando para especificar que desea cifrar los nodos en el pool de nodos, especificando opcionalmente un número máximo permitido de nodos nuevos que se pueden crear durante la operación de actualización y un número máximo permitido de nodos que pueden no estar disponibles:

oci ce node-pool update --node-pool-id <node-pool-ocid> --<property-to-update> <new-value> --node-source-details "{\"imageId\":\"<image-ocid>\",\"sourceType\":\"IMAGE\"}" --node-pool-cycling-details "{\"isNodeCyclingEnabled\":true,\"maximumUnavailable\":\"<value>\",\"maximumSurge\":\"<value>\"}"

Supervise el progreso de la operación de actualización visualizando el estado de la solicitud de trabajo asociada:

oci ce work-request list --compartment-id <compartment-ocid> --resource-id <node-pool-ocid>
oci ce work-request get --work-request-id <work-request-ocid>