Ayude a mejorar esta página
Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.
Cómo controlar si una carga de trabajo se implementa en nodos del modo automático de EKS
Al ejecutar cargas de trabajo en un clúster de EKS con el modo automático de EKS, es posible que deba controlar si determinadas cargas de trabajo se ejecutan en nodos del modo automático de EKS o en otros tipos de computación. En este tema se describe cómo usar los selectores de nodos y las reglas de afinidad para garantizar que las cargas de trabajo estén programadas en la infraestructura de computación prevista.
Los ejemplos de este tema muestran cómo utilizar la etiqueta eks.amazonaws.com/compute-type para exigir o impedir la implementación de la carga de trabajo en los nodos del modo automático de EKS. Esto resulta especialmente útil en clústeres de modo mixto en los que se ejecutan tanto el modo automático de EKS como otros tipos de computación, como los aprovisionadores Karpenter autoadministrados o los grupos de nodos administrados por EKS.
Los nodos del modo automático de EKS han establecido el valor de la etiqueta eks.amazonaws.com/compute-type en auto. Muestra cómo utilizar esta marca para controlar si una carga de trabajo se implementa en nodos administrados por el modo automático de EKS.
Requiere que una carga de trabajo se implemente en nodos del modo automático de EKS.
nota
Este valor de nodeSelector no es obligatorio para el modo automático de EKS. Este valor de nodeSelector es relevante únicamente si ejecuta un clúster en un modo mixto, con tipos de nodos no administrados por el modo automático de EKS. Por ejemplo, es posible que haya capacidad de computación estática implementada en el clúster con grupos de nodos administrados por EKS, así como una capacidad de computación dinámica administrada por el modo automático de EKS.
Puede agregar este nodeSelector a las implementaciones u otras cargas de trabajo para exigir a Kubernetes que las programe en los nodos del modo automático de EKS.
apiVersion: apps/v1 kind: Deployment spec: template: spec: nodeSelector: eks.amazonaws.com/compute-type: auto
Requiere que una carga de trabajo no se implemente en nodos del modo automático de EKS.
Puede agregar esta nodeAffinity a las implementaciones u otras cargas de trabajo para exigir a Kubernetes que no las programe en los nodos del modo automático de EKS.
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: NotIn values: - auto
Cómo dirigir a un NodePool específico
Un clúster del modo automático de Amazon EKS puede tener más de un grupo de nodos. Es posible que desee que una carga de trabajo se ejecute solo en los nodos de un NodePool concreto. Para ello, las cargas de trabajo pueden coincidir con cualquiera de las siguientes etiquetas:
-
Una etiqueta personalizada que se define en el NodePool. Al agregar etiquetas en
spec.template.metadata.labelsen un NodePool, el modo automático de Amazon EKS aplica esas etiquetas a todos los nodos que el NodePool aprovisiona. El método recomendado es el uso de etiquetas personalizadas. Una etiqueta personalizada vincula la carga de trabajo a una capacidad, comoworkload-class: gpu-inference, en lugar de a un nombre de NodePool específico. -
La etiqueta
karpenter.sh/nodepoolmás conocida. El modo automático de Amazon EKS aplica esta etiqueta a todos los nodos que aprovisiona, con el nombre del NodePool como valor. Use esta etiqueta cuando no haya definido ninguna etiqueta personalizada y desee dirigir a un NodePool por nombre.
Cómo dirigir a una etiqueta de NodePool personalizada
Primero, defina una etiqueta en el NodePool.
apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: gpu spec: template: metadata: labels: workload-class: gpu-inference
Para obtener más información acerca de la configuración del NodePool, consulte Creación de un grupo de nodos para el modo automático de EKS.
A continuación, haga coincidir esa etiqueta con la carga de trabajo.
apiVersion: apps/v1 kind: Deployment metadata: name: inference spec: template: spec: nodeSelector: workload-class: gpu-inference
Los pods de esta implementación se programan solo en los nodos que el NodePool gpu aprovisiona. Las cargas de trabajo sin este nodeSelector continúan ejecutándose en el NodePool predeterminado.
Cómo dirigir a un NodePool por nombre
Los cambios de nombre del NodePool afectan a la programación
Fijar una carga de trabajo por nombre puede dejar los pods en el estado Pending si cambia el nombre del NodePool de destino o se elimina. Use una etiqueta de capacidad personalizada para cualquier carga de trabajo que espere que sobreviva a una sola definición de NodePool.
apiVersion: apps/v1 kind: Deployment spec: template: spec: nodeSelector: karpenter.sh/nodepool: <your-nodepool-name>
Para obtener más información sobre cómo Karpenter relaciona los pods con los NodePools, consulte Programación