Las versiones 1.18 a 1.24 de Kubernetes conservan la capacidad de programación elástica en Elastic Container Instance (ECI). Desde mayo de 2023, Container Service for Kubernetes (ACK) descontinuó el mantenimiento de esta función para los clústeres que ejecutan Kubernetes v1.24 o posterior. Use una de las alternativas a continuación:
Configure resource allocation based on ECS instances and elastic container instances: Configure la programación exclusiva de ECI, exclusiva de ECS o con preferencia de ECS mediante taints, tolerations y afinidad de nodos nativos de Kubernetes.
Configure priority-based resource scheduling: Use ResourcePolicy para estrategias avanzadas, como la programación basada en prioridades entre ECS de suscripción, ECS pay-as-you-go y ECI; el escalado descendente en orden inverso y la migración no intrusiva de pods.
Para comparar las soluciones de programación de nodos virtuales, consulte Schedule a pod to a virtual node.
La programación basada en Elastic Container Instance permite controlar qué backend de cómputo ejecuta los pods mediante una sola anotación en los metadatos del pod. Según el valor de la anotación, los pods se ejecutan exclusivamente en nodos de Elastic Compute Service (ECS), exclusivamente en instancias de contenedor elásticas o en instancias de contenedor elásticas solo cuando se agota la capacidad de ECS en el clúster.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Un clúster administrado Pro de ACK
-
Una versión del programador compatible con su versión de Kubernetes: Para obtener detalles sobre las versiones del programador, consulte kube-scheduler.
Versión de Kubernetes
Versión mínima del programador
1.18
v1.18-ack-3.0
1.20
v1.20.4-ack-4.0
1.22
v1.22.3-ack-1.0
1.24
v1.24.3-ack-2.0
El componente
ack-virtual-nodedesplegado en el clúster. Para consultar las instrucciones de configuración, véase Schedule pods to elastic container instances through virtual nodes.
Configuración del modo de programación
Agregue la anotación alibabacloud.com/burst-resource a la sección metadata del pod. En un Deployment, coloque la anotación bajo spec.template.metadata.
La tabla a continuación resume cómo afecta cada valor de anotación al comportamiento de programación:
|
Valor de la anotación |
Comportamiento de programación |
Requiere nodo virtual |
Falla si |
|
(no establecido) |
Usa únicamente los nodos ECS existentes en el clúster (predeterminado) |
No |
— |
|
|
Prioriza los nodos ECS; recurre a ECI cuando la capacidad de ECS es insuficiente |
— |
— |
|
|
Usa exclusivamente ECI; nunca usa nodos ECS |
Sí |
No existe ningún nodo virtual en el clúster |
|
Cualquier otro valor |
— |
— |
Siempre falla; valor no válido |
alibabacloud.com/burst-resource: eci entra en conflicto con alibabacloud.com/fluid-sidecar-target: eci. Para ver ejemplos de uso de alibabacloud.com/fluid-sidecar-target, consulte Accelerate data access in serverless cloud computing y temas relacionados.
Aplicación de la anotación
-
Cree un archivo llamado
nginx-deployment.yamlcon el contenido a continuación:apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 4 selector: matchLabels: app: nginx template: metadata: name: nginx annotations: alibabacloud.com/burst-resource: eci # Fall back to ECI when ECS capacity is insufficient labels: app: nginx spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 resources: limits: cpu: 2 requests: cpu: 2 -
Aplique el manifiesto:
kubectl apply -f nginx-deployment.yaml
Escenarios de fallo
La programación del pod falla en las situaciones a continuación:
El valor de la anotación no es
ecinieci_only. El mensaje de PodStatus esrequesttypemustbeeci,eci_onlyorecs(Kubernetes v1.22.15 y v1.24.6).El valor de la anotación es
eci_only, pero no existe ningún nodo virtual en el clúster. El mensaje de PodStatus esdoesn'tfitecitype:eci_only(Kubernetes v1.22.15 y v1.24.6).