Realización de una actualización de Kubernetes de nodo gestionado externa mediante la sustitución de un pool de nodos existente por un nuevo pool de nodos

Descubra cómo actualizar la versión de Kubernetes en nodos gestionados en un pool de nodos sustituyendo el pool de nodos original por un nuevo pool de nodos que tenga nodos gestionados con una versión de Kubernetes más reciente, mediante Container Engine for Kubernetes (OKE).

Nota

Esta sección solo se aplica a los nodos gestionados. Para obtener información sobre la actualización de nodos autogestionados, consulte Actualización de nodos autogestionados a una versión más reciente de Kubernetes mediante la sustitución de un nodo autogestionado existente.

Para "actualizar" la versión de Kubernetes que se ejecuta en los nodos gestionados de un pool de nodos, sustituya el pool de nodos original por un nuevo pool de nodos que tenga nuevos nodos gestionados que ejecuten la versión adecuada de Kubernetes. Una vez purgados los nodos gestionados existentes en el pool de nodos original para evitar el inicio de nuevos pods y suprimir los pods existentes, puede suprimir el pool de nodos original. Cuando se inician nuevos nodos gestionados en el nuevo pool de nodos, ejecutan la versión de Kubernetes más reciente especificada.

Uso de la consola

Para realizar una actualización "externa" de un pool de nodos en un cluster, cree un nuevo pool de nodos para "actualizar" la versión de Kubernetes en los nodos gestionados:

  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 cambiar la versión de Kubernetes que se ejecuta en los nodos gestionados.
  4. En la página Cluster, haga clic en el separador Pools de nodos y, a continuación, en Agregar pool de nodos para crear un nuevo pool de nodos y especificar la versión de Kubernetes requerida para sus nodos gestionados.

    La versión de Kubernetes que especifique debe ser compatible con la versión que se está ejecutando en los nodos de plano de control.

  5. Si hay etiquetas asociadas a nodos gestionados en el pool de nodos original y esas etiquetas son utilizadas por selectores (por ejemplo, para determinar los nodos en los que ejecutar pods), use el comando kubectl label nodes para asociar las mismas etiquetas a los nuevos nodos gestionados en el nuevo pool de nodos. Consulte Asignación de pods a nodos en la documentación de Kubernetes.
  6. Para el primer nodo gestionado en el pool de nodos original, introduzca:

    kubectl drain <node_name>

    Para obtener más información:

    Recomendado: Aproveche los presupuestos de interrupción de pod según corresponda para su aplicación con el fin de garantizar que haya un número suficiente de pods de réplica en ejecución durante la operación de vaciado.

  7. Repita el paso anterior para cada nodo gestionado restante en el pool de nodos, hasta que todos los nodos gestionados se hayan purgado del pool de nodos original.

    Cuando haya purgado todos los nodos gestionados del pool de nodos original y cuando los pods se estén ejecutando en nodos gestionados del nuevo pool de nodos, puede suprimir el pool de nodos original.

  8. En la página Cluster, muestre el separador Pools de nodos y seleccione Suprimir pool de nodos en el menú Acciones junto al pool de nodos original.

    Se suprime el pool de nodos original y todos sus nodos gestionados.

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 Kubernetes de nodo gestionado "fuera de lugar"

Primero, cree un nuevo pool de nodos y especifique la versión de Kubernetes necesaria para sus nodos gestionados:

oci ce node-pool create \
--cluster-id <cluster-ocid> \
--name <node-pool-name> \
--node-image-id <image-ocid> \
--compartment-id <compartment-ocid> \
--kubernetes-version <version> \
--node-shape <shape> \
--placement-configs "[{\"availability-domain\":\"<domain-name>\", \"subnet-id\":\"<subnet-ocid>\"}]" \
--size <number-of-nodes>

A continuación, para cada nodo gestionado en el pool de nodos original, evite que los nuevos pods se inicien y suprima los pods existentes drenando cada nodo gestionado a su vez:

kubectl drain <node_name>

Finalmente, suprima el pool de nodos original:

oci ce node-pool delete --node-pool-id <node-pool-ocid> [OPTIONS]

Por ejemplo:

oci ce node-pool create \
--cluster-id ocid1.cluster.oc1.iad.aaa____qea \
--name finance-node-pool \
--node-image-id oocid1.image.oc1.iad.aaa______vpq \
--compartment-id ocid1.compartment.oc1..aaa____fda \
--kubernetes-version v1.24.1 \
--node-shape VM.Standard2.1 \
--placement-configs "[{\"availability-domain\":\"s__D:US-ASHBURN-AD-1\", \"subnet-id\":\"ocid1.subnet.oc1.iad.aaa______2sq\"}]" \
--size 1
kubectl drain 10.0.10.196
kubectl drain 10.0.10.18
kubectl drain 10.0.10.84
oci ce node-pool delete --node-pool-id ocid1.nodepool.oc1.iad.aaaaaaa______eya