Use etiquetas de nodo y nodeSelector para dirigir los pods a nodos específicos en su clúster de ACK. De forma predeterminada, el programador de Kubernetes coloca los pods automáticamente. Use nodeSelector cuando las cargas de trabajo tengan requisitos de hardware específicos; por ejemplo, nodos con GPU para tareas de aprendizaje automático, nodos con SSD para bases de datos con uso intensivo de E/S o nodos dedicados para la coubicación de servicios sensibles a la latencia.
nodeSelector es la restricción de programación más sencilla. A diferencia de los taints y las tolerancias, no impide que otros pods se ejecuten en el mismo nodo; solo controla dónde pueden ubicarse los pods objetivo. Para lograr un aislamiento más estricto o reglas más expresivas, use afinidad de nodo o afinidad entre pods.
Requisitos previos
Antes de empezar, asegúrese de contar con:
Un ACK managed cluster o un clúster dedicado de ACK (ya no es posible crear nuevos clústeres dedicados de ACK)
Una stateless workload (Deployment) o una stateful workload (StatefulSet) para desplegar
Paso 1: Etiquetar un nodo
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, elija Nodes > Nodes.
En la esquina superior derecha de la página, haga clic en Manage Labels and Taints. En la pestaña Labels, agregue una etiqueta al nodo de destino. En este ejemplo, establezca Name como
pody Value comonginx. Para obtener más información, consulte Create and manage node labels.
Paso 2: Desplegar con nodeSelector
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, elija Workloads > Deployments.
-
En la página Deployments, haga clic en Create from YAML y aplique el siguiente manifiesto. El campo
nodeSelectorrestringe los pods a los nodos que tienen la etiquetapod: nginx.apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment-basic labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: nodeSelector: pod: nginx # Pods are scheduled only to nodes with this label. containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 En la página Deployments, haga clic en el nombre del Deployment. En la pestaña Pods, revise la columna de nodo correspondiente a cada pod. Todos los pods deben ejecutarse en nodos que tengan la etiqueta
pod: nginx. Si un pod muestra un nodo diferente, compruebe que la etiqueta de nodo se aplicó correctamente en el Paso 1.
Pasos siguientes
Para consultar la referencia completa sobre
nodeSelectory otros métodos de asignación de nodos, consulte Assigning Pods to Nodes.Para controlar el orden de programación de los pods y configurar el escalado inverso durante los despliegues y las operaciones de escalado horizontal, consulte Customize elastic resource priority scheduling.