Despliegue de aplicaciones en agrupaciones de trabajadores donde está habilitado el escalado automático
Para limitar un despliegue de pod a una agrupación de nodos trabajadores específica gestionada por el programa de escalado automático de clústeres, utilice una combinación de etiquetas y nodeSelector o nodeAffinity para
desplegar apps solo en las agrupaciones de nodos trabajadores escaladas automáticamente. Con nodeAffinity, tiene más control sobre cómo funciona el comportamiento de planificación para combinar pods con nodos trabajadores. A continuación,
utilice marcas y tolerancias para que solo se puedan ejecutar estas apps en las agrupaciones de nodos trabajadores escaladas automáticamente.
Para obtener más información, consulte la siguiente documentación de Kubernetes:
Antes de empezar:
- Instale el plugin
ibm-iks-cluster-autoscaler. - Inicie una sesión en la cuenta. If applicable, target the appropriate resource group. Establezca el contexto para el clúster.
Para limitar los pods que se ejecutan en determinadas agrupaciones de nodos trabajadores escaladas automáticamente:
-
Asegúrese de que ha etiquetado y ha aplicado marcas en la agrupación de nodos trabajadores escalada automáticamente como se describe en Preparación del clúster para el escalado automático.
-
En la plantilla de especificación del pod, haga coincidir
nodeSelectoronodeAffinitycon la etiqueta que ha utilizado en la agrupación de nodos trabajadores.Ejemplo de
nodeSelector:... spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent nodeSelector: app: nginx ...Ejemplo de
nodeAffinity:spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: use operator: In values: - autoscale -
En la plantilla de especificación del pod, empareje
tolerationcon la marca que ha definido en la agrupación de nodos trabajadores.Ejemplo de
NoExecuteNoExecute :tolerations: - key: use operator: "Exists" effect: "NoExecute" -
Despliegue el pod. Debido a la etiqueta coincidente, el pod se planifica en un nodo trabajador que se encuentra en la agrupación de nodos trabajadores etiquetada. Debido a la tolerancia coincidente, el pod puede ejecutarse en la agrupación de nodos trabajadores marcados.
kubectl apply -f pod.yaml
Escalado hacia arriba de nodos trabajadores antes de que la agrupación de nodos trabajadores no tenga recursos suficientes
Como se describe en el tema Comprender cómo funciona el escalador automático de clústeres y en las Preguntas frecuentes sobre el escalador automático de clústeres de Kubernetes, el escalador automático de clústeres amplía sus grupos de trabajadores en respuesta a los recursos solicitados de la carga de trabajo frente a los recursos disponibles del grupo de trabajadores. Sin embargo, es posible que desee que el programa de escalado automático de clústeres escale hacia arriba los nodos trabajadores antes de que la agrupación de nodos trabajadores se quede sin recursos. En este caso, la carga de trabajo no tiene que esperar tanto tiempo a que se suministren los nodos trabajadores porque la agrupación de nodos trabajadores ya se ha escalado hacia arriba para satisfacer las solicitudes de recursos.
El programa de escalado automático de clústeres no da soporte al escalado temprano (sobresuministro) de agrupaciones de nodos trabajadores. Sin embargo, puede configurar otros recursos de Kubernetes para que trabajen con el programa de escalado automático de clústeres para conseguir un escalado temprano.
Pods en pausa
Puede crear una implementación que despliegue contenedores de pausa en pods con solicitudes de recursos específicas y asignar a la implementación una prioridad de pod baja. Cuando cargas de trabajo de prioridad más alta necesiten estos recursos, el pod de pausa se anticipa y se convierte en un pod pendiente. Este suceso activa el escalado hacia arriba del programa de escalado automático de clústeres.
Para obtener más información sobre cómo configurar una implementación de pausa de pod, consulte las preguntas frecuentes de Kubernetes. Puede utilizar este archivo de configuración de sobreaprovisionamiento de ejemplo para crear la clase de prioridad, la cuenta de servicio y las implementaciones.
Si utiliza este método, asegúrese de que entiende cómo funciona la prioridad de pod y cómo establecer la prioridad de pod para los despliegues. Por ejemplo, si el pod en pausa no tiene
suficientes recursos para un pod de prioridad más alta, el pod no se anticipa. La carga de trabajo de prioridad más alta permanece en espera, por lo que el programa de escalado automático de clústeres se activa para que escale hacia arriba.
Sin embargo, en este caso, la acción de aumento de escalado no es temprana, porque la carga de trabajo que desea ejecutar no se puede planificar porque no hay recursos suficientes. El pod en pausa debe tener nodeAffinity o nodeSelector coincidente así como las tolerancias coincidentes que se hayan establecido para la agrupación de nodos trabajadores.
Escalado automático de pods horizontal (HPA)
Puesto que el escalado automático de pod horizontal se basa en el uso medio de CPU de los pods, el límite de uso de CPU establecido se alcanza antes de que la agrupación de nodos trabajadores se quede sin recursos.
Se solicitan más pods, lo que activa el programa de escalado automático de clústeres para escalar hacia arriba la agrupación de nodos trabajadores. Para obtener más información sobre cómo configurar HPA, consulte los documentos de Kubernetes.