Uso de la capacidad preferente para aprovisionar nodos de trabajador

Descubra cómo especificar la capacidad preferente para instancias informáticas que alojan nodos de trabajador en los pools de nodos de clusters que ha creado mediante Container Engine for Kubernetes (OKE).

Al utilizar Container Engine for Kubernetes para definir la configuración de ubicación de un pool de nodos, puede especificar la capacidad preferente como tipo de capacidad para las instancias informáticas que alojan nodos de trabajador en el pool de nodos. La especificación de capacidad preferente permite ahorrar dinero mediante el uso de instancias preferentes para ejecutar cargas de trabajo que solo necesitan ejecutarse durante períodos cortos o que se pueden interrumpir cuando se reclama la capacidad.

Las instancias preferentes se comportan de la misma manera que las instancias informáticas normales, pero la capacidad se reclama cuando se necesita en otro lugar y las instancias se terminan. Si las cargas de trabajo son tolerantes a fallos y pueden soportar interrupciones, las instancias preferentes pueden reducir los costos. Por ejemplo, puede utilizar instancias preferentes para optimizar los costos de las cargas de trabajo que pueden tolerar interrupciones, como pruebas que se pueden parar y reanudar más adelante. Para obtener más información, consulte Instancias preferentes.

Cuando se va a terminar una instancia preferente que aloja un nodo de trabajador, se notifica a Container Engine for Kubernetes. Antes de terminar la instancia de nodo, Container Engine for Kubernetes:

  • conecta el nodo de trabajador para evitar que el programador de kube coloque nuevos pods en ese nodo
  • drena el nodo de trabajador para expulsar de forma segura los pods, asegurándose de que los contenedores del pod terminan correctamente y realizan cualquier limpieza necesaria

Después de que se haya terminado una instancia preferente que aloja un nodo de trabajador, Container Engine for Kubernetes intenta crear una nueva instancia preferente como sustitución. Si Container Engine for Kubernetes no puede crear una instancia preferente de sustitución después de varios intentos, se muestra un mensaje.

Al seleccionar la capacidad preferente como tipo de capacidad para un pool de nodos:

  • Container Engine for Kubernetes agrega automáticamente una etiqueta de Kubernetes oci.oraclecloud.com/oke-is-preemptible=true a los nodos de trabajador alojados en instancias preferentes. Puede utilizar la etiqueta con selectores de nodos de Kubernetes y afinidad/antiafinidad de nodos para controlar qué pods están programados en esos nodos de trabajador. Consulte Asignación de pods a nodos en la documentación de Kubernetes.
  • Container Engine for Kubernetes agrega automáticamente un oci.oraclecloud.com/oke-is-preemptible de Kubernetes a los nodos de trabajador alojados en instancias preferentes. Puede utilizar la protección con las tolerancias de Kubernetes para controlar qué pods están programados en esos nodos de trabajador. Consulte Etiquetas y tolerancias en la documentación de Kubernetes.
  • Puede especificar si los volúmenes de inicio asociados a las instancias preferentes que alojan nodos de trabajador se suprimen permanentemente si las instancias se terminan.

Tenga en cuenta lo siguiente:

  • Muchas, pero no todas, las unidades de computación soportan instancias preferentes. En particular, tenga en cuenta que las instancias preferentes no están soportadas por unidades con hardware dedicado. No puede crear un pool de nodos con un tipo de capacidad preferente si la unidad del pool de nodos no soporta instancias preferentes. Del mismo modo, no puede cambiar el tipo de capacidad de un pool de nodos a capacidad preferente si la unidad del pool de nodos no soporta instancias preferentes.
  • Las instancias preferentes tienen una serie de limitaciones y restricciones. Consulte Soporte y limitaciones.
  • Cualquier cambio que realice en las propiedades del nodo de trabajador solo se aplica a los nuevos nodos de trabajador. La actualización del tipo de capacidad asociado a un pool de nodos no afecta a las propiedades de los nodos de trabajador existentes.

Mejores prácticas al utilizar la capacidad preferente

Al seleccionar la capacidad preferente como tipo de capacidad para un pool de nodos, tenga en cuenta las siguientes mejores prácticas:

  • Las instancias preferentes son las más adecuadas para cargas de trabajo en contenedores tolerantes a fallos. Al diseñar aplicaciones que se pueden ejecutar en instancias preferentes, supongamos que la capacidad preferente se puede reclamar (y las instancias preferentes se pueden terminar) en cualquier momento.
  • Utilice selectores de nodos de Kubernetes y afinidad/antiafinidad de nodos, junto con las marcas y tolerancias de Kubernetes, para garantizar que solo las cargas de trabajo tolerantes a fallos estén programadas para ejecutarse en instancias preferentes. Consulte Asignación de pods a nodos en la documentación de Kubernetes.
  • Oracle recomienda no especificar la capacidad preferente como tipo de capacidad para el pool de nodos principal de un cluster. En su lugar, solo especifique la capacidad preferente para pools de nodos adicionales que complementan el pool de nodos principal del cluster.
  • Oracle recomienda evitar la situación en la que un pool de nodos tenga una combinación de tipos de capacidad. Aunque se admite una combinación de tipos de capacidad en el mismo pool de nodos, Oracle recomienda que todos los nodos de trabajador del pool de nodos tengan el mismo tipo de capacidad para facilitar la gestión del pool de nodos. Por ejemplo, Oracle recomienda que:
    • evitar especificar la capacidad bajo demanda en un dominio de disponibilidad y la capacidad preferente en un segundo dominio de disponibilidad
    • evitar cambiar el tipo de capacidad de la capacidad bajo demanda a la capacidad preferente al escalar un pool de nodos para agregar más nodos

Uso de la consola

Creación de un cluster y especificación de la capacidad preferente

  1. Siga las instrucciones para crear un cluster mediante el flujo de trabajo "Creación personalizada". Consulte Uso de la consola para crear un cluster con una configuración definida explícitamente en el flujo de trabajo "Creación personalizada.
  2. Al especificar la configuración de ubicación para un pool de nodos en el cluster:
    1. Especifique el primer dominio de disponibilidad y subred:
      • Dominio de disponibilidad: seleccione el dominio de disponibilidad en el que desea colocar nodos de trabajador.
      • Dominio de errores: (opcional) uno o más dominios de errores en el dominio de disponibilidad en el que colocar los nodos de trabajador.
      • Subred: seleccione la subred configurada para alojar nodos de trabajador.
    2. Haga clic en Mostrar opciones avanzadas y especifique que desea utilizar instancias preferentes para aprovisionar nodos de trabajador en el pool de nodos:

      • Tipo de capacidad: seleccione Capacidad preferente.
      • Cuando se le solicite, suprima permanentemente el volumen de inicio asociado: seleccione si desea suprimir permanentemente el volumen de inicio asociado cuando se reclame la capacidad.
    3. También puede hacer clic en Otra fila para agregar dominios de disponibilidad, subredes y tipos de capacidad adicionales a la configuración de ubicación. Si especifica varios dominios de disponibilidad en la configuración de ubicación de un pool de nodos, puede especificar un tipo de capacidad diferente para cada dominio de disponibilidad. Sin embargo, Oracle recomienda que todos los nodos de trabajador del pool de nodos tengan el mismo tipo de capacidad para facilitar la gestión del pool de nodos.

Creación de un pool de nodos y especificación de la capacidad preferente

  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 crear un nuevo pool de nodos.
  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 las propiedades requeridas para sus nodos de trabajador.
  5. Al especificar la configuración de ubicación para un pool de nodos en el cluster:
    1. Especifique el primer dominio de disponibilidad y subred:
      • Dominio de disponibilidad: seleccione el dominio de disponibilidad en el que desea colocar nodos de trabajador.
      • Dominio de errores: (opcional) uno o más dominios de errores en el dominio de disponibilidad en el que colocar los nodos de trabajador.
      • Subred: seleccione la subred configurada para alojar nodos de trabajador.
    2. Haga clic en Mostrar opciones avanzadas y especifique que desea utilizar instancias preferentes para aprovisionar nodos de trabajador en el pool de nodos:

      • Tipo de capacidad: seleccione Capacidad preferente.
      • Cuando se le solicite, suprima permanentemente el volumen de inicio asociado: seleccione si desea suprimir permanentemente el volumen de inicio asociado cuando se reclame la capacidad.
    3. También puede hacer clic en Otra fila para agregar dominios de disponibilidad, subredes y tipos de capacidad adicionales a la configuración de ubicación. Si especifica varios dominios de disponibilidad en la configuración de ubicación de un pool de nodos, puede especificar un tipo de capacidad diferente para cada dominio de disponibilidad. Sin embargo, Oracle recomienda que todos los nodos de trabajador del pool de nodos tengan el mismo tipo de capacidad para facilitar la gestión del pool de nodos.

Actualización de un pool de nodos y especificación de la capacidad preferente

  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 que desea modificar.
  4. Haga clic en Pools de nodos en Recursos y haga clic en el nombre del pool de nodos que desea modificar.
  5. En la página Detalles de pool de nodos, haga clic en Editar.
  6. Al especificar la configuración de ubicación para un pool de nodos en el cluster:
    1. Especifique el primer dominio de disponibilidad y subred:
      • Dominio de disponibilidad: seleccione el dominio de disponibilidad en el que desea colocar nodos de trabajador.
      • Dominio de errores: (opcional) uno o más dominios de errores en el dominio de disponibilidad en el que colocar los nodos de trabajador.
      • Subred: seleccione la subred configurada para alojar nodos de trabajador.
    2. Haga clic en Mostrar opciones avanzadas y especifique que desea utilizar instancias preferentes para aprovisionar nodos de trabajador en el pool de nodos:

      • Tipo de capacidad: seleccione Capacidad preferente.
      • Cuando se le solicite, suprima permanentemente el volumen de inicio asociado: seleccione si desea suprimir permanentemente el volumen de inicio asociado cuando se reclame la capacidad.
    3. También puede hacer clic en Otra fila para agregar dominios de disponibilidad, subredes y tipos de capacidad adicionales a la configuración de ubicación. Si especifica varios dominios de disponibilidad en la configuración de ubicación de un pool de nodos, puede especificar un tipo de capacidad diferente para cada dominio de disponibilidad. Sin embargo, Oracle recomienda que todos los nodos de trabajador del pool de nodos tengan el mismo tipo de capacidad para facilitar la gestión del pool de nodos.
  7. Guarde los cambios.

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.

Creación de un pool de nodos y especificación de la capacidad preferente

Para utilizar la CLI para crear un pool de nodos que utilice capacidad preferente para aprovisionar nodos de trabajador, incluya el argumento preemptibleNodeConfig en el parámetro --placement-configs.

Por ejemplo:

oci ce node-pool create \
--cluster-id ocid1.cluster.oc1.iad.aaaaaaaaaf______jrd \
--name test-node \
--node-image-id ocid1.image.oc1.iad.aaaaaaaa6______nha \
--compartment-id oocid1.compartment.oc1..aaaaaaaay______t6q \
--kubernetes-version v1.21.5 \
--node-shape VM.Standard2.1 \
--placement-configs "[{\"availability-domain\":\"IqDk:US-ASHBURN-AD-2\", \"preemptibleNodeConfig\": {\"preemptionAction\":{\"isPreserveBootVolume\":false, \"type\":\"TERMINATE\"}}, \"subnet-id\":\"ocid1.subnet.oc1.iad.aaaaaaaa2xpk______zva\", \"faultDomains\":[\"FAULT-DOMAIN-3\", \"FAULT-DOMAIN-1\"]}, {\"availability-domain\":\"IqDk:US-ASHBURN-AD-1\", \"preemptibleNodeConfig\": {\"preemptionAction\":{\"isPreserveBootVolume\":false, \"type\":\"TERMINATE\"}}, \"subnet-id\":\"ocid1.subnet.oc1.iad.aaaaaaaauhls______bpq\", \"faultDomains\": [\"FAULT-DOMAIN-1\", \"FAULT-DOMAIN-2\"]}]" \
--size 1 \
--region=us-ashburn-1 \

Si especifica varios dominios de disponibilidad en la configuración de ubicación de un pool de nodos, puede especificar un tipo de capacidad diferente para cada dominio de disponibilidad. Sin embargo, Oracle recomienda que todos los nodos de trabajador del pool de nodos tengan el mismo tipo de capacidad para facilitar la gestión del pool de nodos.

Uso de la API

Para obtener más información sobre el uso de la API y la firma de solicitudes, consulte la documentación de la API de REST y Credenciales de seguridad. Para obtener información sobre los SDK, consulte Los SDK y la CLI.

Utilice el atributo placementConfigs del objeto nodeConfigDetails para especificar el tipo de capacidad al crear o actualizar pools de nodos.

Si especifica varios dominios de disponibilidad en la configuración de ubicación de un pool de nodos, puede especificar un tipo de capacidad diferente para cada dominio de disponibilidad. Sin embargo, Oracle recomienda que todos los nodos de trabajador del pool de nodos tengan el mismo tipo de capacidad para facilitar la gestión del pool de nodos.