Compare los métodos de programación de nodos virtuales para clústeres administrados ACK y clústeres dedicados ACK según su escenario de programación.
Escenarios comunes de programación de nodos virtuales
Programar pods exclusivamente en nodos virtuales.
Priorizar los nodos ECS y recurrir a los nodos virtuales cuando los recursos de ECS sean insuficientes.
Para un clúster administrado ACK (Basic Edition), utilice la etiqueta alibabacloud.com/eci=true en el primer escenario. Para el segundo, actualice a un clúster administrado ACK (Pro Edition).
Los clústeres administrados ACK (Pro Edition) se adaptan mejor al segundo escenario gracias a su mayor confiabilidad, garantías de SLA y capacidad superior. Puede migrar sin interrupciones desde un clúster administrado ACK (Basic Edition) hacia un clúster administrado ACK (Pro Edition).
Notas de uso
-
La etiqueta
alibabacloud.com/eci=truetiene la máxima prioridad y anula los siguientes métodos de programación:Semántica nativa de programación de Kubernetes, como nodeSelector, afinidad y anti-afinidad, y restricciones de distribución de topología de pods
ResourcePolicy
ElasticResource (Annotation:
alibabacloud.com/burst-resource)
No se recomienda utilizar ElasticWorkload ni ElasticResource (Annotation:
alibabacloud.com/burst-resource) porque su desarrollo está inactivo.El componente virtual-kubelet-autoscaler ya no recibe mantenimiento. Actualice su clúster administrado ACK (Basic Edition) a un clúster administrado ACK (Pro Edition) y desinstale este componente para liberar recursos del nodo. Use la semántica nativa de programación de Kubernetes para implementar despliegue distribuido y programación basada en afinidad para pods ECI entre zonas.
-
En los pods alojados en nodos virtuales que usan volúmenes de disco aprovisionados dinámicamente, las StorageClasses de tipo
WaitForFirstConsumerno son compatibles con estos métodos de programación:Uso de etiquetas:
alibabacloud.com/eci=true.Especificación de un nodo virtual mediante nodeName.
Comparativa de soluciones y recomendaciones de selección
En las tablas comparativas se utilizan los siguientes términos:
-
Programación basada en prioridades: Cuando un clúster cuenta con distintos tipos de nodos, configure la prioridad de programación. Por ejemplo, priorice los nodos ECS y recurra a los nodos virtuales si los recursos de ECS resultan insuficientes.
Sin programación basada en prioridades, no es posible asignar prioridades entre tipos de nodos. Por ejemplo, la etiqueta
alibabacloud.com/eci=trueprograma los pods únicamente en nodos virtuales, sin opción de retorno a ECS como prioridad principal. -
Directiva de programación estricta: Determina si las reglas de programación para los diferentes tipos de node pool actúan como restricciones obligatorias.
Una directiva no estricta funciona como restricción flexible. Por ejemplo, el campo preferredDuringSchedulingIgnoredDuringExecution de la afinidad de nodos prioriza los nodos ECS, pero los pods podrían ubicarse en nodos virtuales debido a la política de puntuación de nodos.
Una directiva estricta actúa como restricción obligatoria. Por ejemplo, ResourcePolicy garantiza que los pods se programen en nodos ECS siempre que existan recursos suficientes.
Clúster administrado ACK (Pro Edition)
|
Método de programación |
Escenario típico |
Programación basada en prioridades |
Reducir primero los pods ECI |
Recomendado |
Operaciones relacionadas |
|
|
labels: |
Programa los pods exclusivamente en nodos virtuales. No permite seleccionar un nodo virtual específico. |
No compatible |
N/A |
Recomendado |
||
|
Semántica nativa de programación de Kubernetes |
nodeSelector |
Con una tolerancia, programa los pods solo en nodos virtuales y permite dirigirse a un nodo virtual específico. |
No compatible |
N/A |
Recomendado |
|
|
Afinidad y anti-afinidad |
Use Taint, Toleration y NodeAffinity para programar pods exclusivamente en ECI, exclusivamente en ECS o con preferencia en ECS (por ejemplo, recurrir a nodos virtuales cuando los recursos de ECS sean insuficientes). Este método también admite (y solo admite) reducir primero ECI y luego ECS. |
Compatible (directiva de programación no estricta) |
Compatible |
Recomendado |
||
|
Restricciones de distribución de topología de pods |
Distribuye los pods entre zonas para lograr alta disponibilidad y rendimiento. |
No compatible |
Compatible |
Recomendado |
Implementar despliegue distribuido y programación basada en afinidad para pods ECI entre zonas |
|
|
ResourcePolicy Importante
En v1.20, el planificador omite la verificación de imposibilidad de programación para nodos virtuales. En v1.22 y versiones posteriores, solo se omite la verificación de taint. Para conservar el comportamiento de v1.20, deshabilite la capacidad de programación de nodos virtuales en los parámetros del planificador. |
|
Compatible (directiva de programación estricta) |
Compatible |
Recomendado |
Personalizar programación basada en prioridades para recursos elásticos |
|
|
UnitedDeployment |
Programa los pods en nodos ECS o virtuales según el número de réplicas. Por ejemplo, use ECS subscription para 10 réplicas o menos, preemptible instances para entre 11 y 20, y ECI para más de 20. |
Compatible |
Compatible |
Recomendado |
||
|
Semántica nativa de programación de Kubernetes |
nodeSelector |
Con una tolerancia, programa los pods solo en nodos virtuales y permite dirigirse a un nodo virtual específico. |
No compatible |
Compatible |
No recomendado En comparación con un clúster administrado ACK (Pro Edition), el kube-scheduler de un clúster administrado ACK (Basic Edition) y de un clúster dedicado ACK no detecta el inventario subyacente durante la programación, lo que reduce la certeza de crear los pods correctamente. |
|
|
Afinidad y anti-afinidad |
Use Taint, Toleration y NodeAffinity para programar pods exclusivamente en ECI, exclusivamente en ECS o con preferencia en ECS (por ejemplo, recurrir a nodos virtuales cuando los recursos de ECS sean insuficientes). |
Compatible (directiva de programación no estricta) |
Compatible |
|||
|
Restricciones de distribución de topología de pods |
Distribuye los pods entre zonas para lograr alta disponibilidad y rendimiento. |
No compatible |
Compatible |
|||
|
ElasticWorkload (Desarrollo inactivo. Se recomienda usar UnitedDeployment.) |
Agrupa y programa las réplicas de Deployment en nodos ECS o nodos virtuales. |
Compatible |
Compatible |
No recomendado |
Programar pods de cargas de trabajo elásticas en ECI mediante Elastic Workload (descontinuado) |
|
|
ElasticResource (Annotation: (Desarrollo inactivo) |
Solo se admiten dos directivas de programación elástica:
|
Compatible |
Compatible |
No recomendado |
Implementar programación elástica basada en ECI mediante ElasticResource (descontinuado) |
|
|
Componente virtual-kubelet-autoscaler (Mantenimiento discontinuado) |
Solo admite programar primero los pods en nodos ECS y derivarlos a nodos virtuales cuando los recursos de los nodos ECS sean insuficientes. |
Compatible |
Compatible |
No recomendado |
Ninguna |
|