Ejecución de aplicaciones en nodos basados en brazo

Para ejecutar una aplicación en un nodo de trabajador basado en brazo en un cluster, la aplicación debe ejecutarse en un nodo de un pool de nodos para el que ha especificado una unidad basada en brazo. La unidad de computación determina el número de CPU y la cantidad de memoria asignada a cada nodo del pool de nodos. Puede seleccionar unidades con hardware dedicado basadas en brazo y unidades de máquina virtual flexibles. Estas instancias informáticas de Ampere A1 se basan en el procesador Altra de Ampere (consulte Recursos informáticos basados en armamento). Para obtener información sobre el recuento de OCPU, la memoria, el almacenamiento y los detalles de red de estas unidades, consulte Unidades de computación.

Puede especificar una unidad basada en brazo para un pool de nodos mediante la consola, la API y la CLI al crear un nuevo cluster. También puede especificar una unidad basada en brazo al crear un nuevo pool de nodos. Consulte los pasos de configuración del pool de nodos en Creación de un cluster de Kubernetes y Actualización de nodos de trabajador mediante la creación de un nuevo pool de nodos, respectivamente.

Para ver el número de núcleos basados en brazo reservables disponibles, utilice la consola. Abra el menú de navegación y haga clic en Gobernanza y administración. En Gobernanza, haga clic en Límites, cuotas y uso.

En comparación con otras unidades, las unidades basadas en brazo ofrecen una mejor relación precio-rendimiento, un mayor aislamiento de seguridad (porque cada núcleo es de thread único) y un rendimiento más consistente. Normalmente, los desarrolladores utilizan nodos de trabajador basados en brazo en clusters de Kubernetes para desarrollar y probar aplicaciones.

Al desplegar una aplicación en un cluster que ha creado con Container Engine for Kubernetes, debe especificar en la especificación de pod los recursos informáticos necesarios. Para desplegar la aplicación, el programador de kube determina qué nodo tiene los recursos necesarios. Si un cluster tiene pools de nodos con unidades basadas en brazo y también pools de nodos con otras unidades (por ejemplo, unidades AMD64), puede utilizar un nodeSelector en la especificación de pod para especificar que una aplicación se ejecute en nodos de trabajador basados en brazo. Consulte Defining a pod to run only on Arm-based node.

Si desea desplegar una aplicación en nodos de trabajador basados en arm y no basados en armamento en el mismo cluster, utilice imágenes de arquitectura múltiple (a veces conocidas como listas de manifiesto) almacenadas en un registro compatible con Open Container Initiative como Oracle Cloud Infrastructure Registry (consulte Visión general de Container Registry). Las imágenes de arquitectura múltiple se crean a partir de un árbol de origen único, con una etiqueta de imagen que incluye imágenes para las arquitecturas x86 y Arm. Puede crear imágenes de arquitectura múltiple mediante Docker Buildx, Podman y Buildah.

Tenga en cuenta lo siguiente:

  • Puede especificar unidades basadas en brazo para pools de nodos en clusters que tengan puntos finales de API de Kubernetes alojados en una subred de la VCN (conocidos como clusters de VCN nativos). No especifique una unidad basada en brazo para pools de nodos en un cluster si el punto final de la API de Kubernetes del cluster no está integrado en la VCN.
  • Puede especificar unidades basadas en brazo para pools de nodos en clusters que ejecutan Kubernetes versión 1.19.7 o posterior. No especifique una unidad basada en brazo para pools de nodos que ejecuten versiones anteriores de Kubernetes.
  • Después de crear un pool de nodos con una unidad basada en Arm, no puede cambiar el pool de nodos para que tenga una unidad no basada en arm. Del mismo modo, no puede cambiar un pool de nodos con una unidad no basada en arm para tener una unidad basada en arm.
  • Al especificar una unidad basada en brazo para un pool de nodos, también debe especificar una imagen compatible con la unidad. Consulte Unidades de recursos informáticos.

Definición de un pod para ejecutar solo en nodos basados en brazo

Si un cluster tiene pools de nodos con unidades basadas en brazo y también pools de nodos con otras unidades (por ejemplo, unidades AMD64), puede utilizar un nodeSelector en la especificación de pod para especificar que una aplicación se ejecute sólo en nodos de trabajador basados en brazo. Por ejemplo, el siguiente archivo de configuración define un pod para ejecutarse en cualquier nodo basado en brazo del cluster:


apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    kubernetes.io/arch: arm64