Compare os métodos de agendamento de nós virtuais para ACK managed cluster s e ACK dedicated cluster s e escolha a opção ideal para o seu cenário.
Cenários comuns de agendamento de nós virtuais
Agendar pods exclusivamente em nós virtuais.
Priorizar nós ECS e usar nós virtuais como fallback quando os recursos ECS forem insuficientes.
Em um ACK managed cluster (Basic Edition), use o rótulo alibabacloud.com/eci=true para o primeiro cenário. Para o segundo, faça upgrade para um ACK managed cluster (Pro Edition).
Os ACK managed clusters (Pro Edition) atendem melhor ao segundo cenário, pois oferecem maior confiabilidade, garantias de SLA e capacidade ampliada. Você pode migrar perfeitamente de um ACK managed cluster (Basic Edition) para um ACK managed cluster (Pro Edition).
Observações de uso
-
O rótulo
alibabacloud.com/eci=truetem a maior prioridade e substitui os seguintes métodos de agendamento:Semânticas nativas de agendamento do Kubernetes, como nodeSelector, afinidade e anti-afinidade, e restrições de distribuição de topologia de pods
ResourcePolicy
ElasticResource (Annotation:
alibabacloud.com/burst-resource)
Não recomendamos ElasticWorkload e ElasticResource (Annotation:
alibabacloud.com/burst-resource), pois estão com desenvolvimento inativo.O componente virtual-kubelet-autoscaler não recebe mais manutenção. Faça upgrade do seu ACK managed cluster (Basic Edition) para um ACK managed cluster (Pro Edition) e desinstale esse componente para liberar recursos dos nós. Use as semânticas nativas de agendamento do Kubernetes para implementar implantação distribuída e agendamento baseado em afinidade para pods ECI entre zonas.
-
Para pods em nós virtuais que usam volumes de disco provisionados dinamicamente, StorageClasses do tipo
WaitForFirstConsumernão são compatíveis com estes métodos de agendamento:Uso de rótulos:
alibabacloud.com/eci=true.Especificação de um nó virtual via nodeName.
Comparação de soluções e recomendações de escolha
As tabelas de comparação usam os seguintes termos:
-
Agendamento baseado em prioridade: quando o cluster possui diferentes tipos de nós, configure a prioridade de agendamento. Por exemplo, priorize nós ECS e use nós virtuais como fallback caso os recursos ECS sejam insuficientes.
Sem o agendamento baseado em prioridade, não é possível definir prioridades entre tipos de nós. O rótulo
alibabacloud.com/eci=true, por exemplo, agenda pods apenas em nós virtuais, sem fallback prioritário para ECS. -
Política de agendamento estrita: define se as regras de agendamento para diferentes tipos de pool de nós são restrições rígidas.
Uma política não estrita atua como restrição flexível. O campo preferredDuringSchedulingIgnoredDuringExecution da afinidade de nó, por exemplo, prioriza nós ECS, mas os pods ainda podem ser alocados em nós virtuais devido à política de pontuação de nós.
Uma política estrita funciona como restrição rígida. O ResourcePolicy, por exemplo, garante o agendamento dos pods em nós ECS sempre que houver recursos suficientes.
ACK managed cluster (Pro Edition)
|
Método de agendamento |
Cenário típico |
Agendamento baseado em prioridade |
Reduzir escala de pods ECI preferencialmente |
Recomendado |
Operações relacionadas |
|
|
labels: |
Agenda pods apenas em nós virtuais. Não é possível direcionar a um nó virtual específico. |
Não suportado |
N/A |
Recomendado |
||
|
Semânticas nativas de agendamento do Kubernetes |
nodeSelector |
Com uma toleration, agenda pods apenas em nós virtuais e permite direcionar a um nó virtual específico. |
Não suportado |
N/A |
Recomendado |
|
|
Afinidade e anti-afinidade |
Use Taint, Toleration e NodeAffinity para agendar pods exclusivamente em ECI, exclusivamente em ECS ou preferencialmente em ECS (por exemplo, usando nós virtuais como fallback quando os recursos ECS forem insuficientes). Este método também suporta (e somente suporta) a redução de escala primeiro em ECI e depois em ECS. |
Suportado (política de agendamento não estrita) |
Suportado |
Recomendado |
||
|
Restrições de distribuição de topologia de pods |
Distribui pods entre zonas para garantir alta disponibilidade e desempenho. |
Não suportado |
Suportado |
Recomendado |
Implementar implantação distribuída e agendamento baseado em afinidade para pods ECI entre zonas |
|
|
ResourcePolicy Importante
Na versão v1.20, o agendador ignora a verificação de não agendabilidade para nós virtuais. A partir da v1.22, apenas a verificação de taint é ignorada. Para manter o comportamento da v1.20, desative a capacidade de agendamento de nós virtuais nos parâmetros do agendador. |
|
Suportado (política de agendamento estrita) |
Suportado |
Recomendado |
Personalizar agendamento baseado em prioridade para recursos elásticos |
|
|
UnitedDeployment |
Agenda pods em nós ECS ou virtuais com base na contagem de réplicas. Por exemplo, use ECS por assinatura para até 10 réplicas, instâncias preemptíveis para 11 a 20 réplicas e ECI para mais de 20. |
Suportado |
Suportado |
Recomendado |
||
|
Semânticas nativas de agendamento do Kubernetes |
nodeSelector |
Com uma toleration, agenda pods apenas em nós virtuais e permite direcionar a um nó virtual específico. |
Não suportado |
Suportado |
Não recomendado Em comparação com um ACK managed cluster (Pro Edition), o kube-scheduler em um ACK managed cluster (Basic Edition) e em um ACK dedicated cluster não consegue perceber o inventário subjacente durante o agendamento, o que reduz a certeza de criação bem-sucedida do pod. |
|
|
Afinidade e anti-afinidade |
Use Taint, Toleration e NodeAffinity para agendar pods exclusivamente em ECI, exclusivamente em ECS ou preferencialmente em ECS (por exemplo, usando nós virtuais como fallback quando os recursos ECS forem insuficientes). |
Suportado (política de agendamento não estrita) |
Suportado |
|||
|
Restrições de distribuição de topologia de pods |
Distribui pods entre zonas para garantir alta disponibilidade e desempenho. |
Não suportado |
Suportado |
|||
|
ElasticWorkload (status de desenvolvimento inativo. Recomendamos o uso do UnitedDeployment.) |
Agrupa e agenda réplicas de Deployment em nós ECS ou nós virtuais. |
Suportado |
Suportado |
Não recomendado |
Agendar pods de cargas de trabalho elásticas para ECI usando Elastic Workload (descontinuado) |
|
|
ElasticResource (Annotation: (status de desenvolvimento inativo) |
Apenas duas políticas de agendamento elástico são suportadas:
|
Suportado |
Suportado |
Não recomendado |
Implementar agendamento elástico baseado em ECI usando ElasticResource (descontinuado) |
|
|
Componente virtual-kubelet-autoscaler (Manutenção descontinuada) |
Suporta apenas o agendamento de pods primeiramente em nós ECS e, posteriormente, em nós virtuais quando os recursos dos nós ECS forem insuficientes. |
Suportado |
Suportado |
Não recomendado |
Nenhuma |
|