Os pools de nós de nuvem híbrida permitem registrar nós do seu data center (IDC) em um cluster ACK, o que viabiliza o gerenciamento unificado e o agendamento coordenado entre recursos on-premises e na nuvem. Este tópico descreve como agendar aplicações para um pool de nós de nuvem híbrida para atender a requisitos de localização de recursos, conformidade com residência de dados ou hardware específico.
Como funciona
Ao criar um pool de nós de nuvem híbrida, o ACK adiciona automaticamente um taint e um rótulo a cada nó do pool:
Taint:
nodepool-type=hybridcloud:NoSchedule— impede que componentes do sistema e cargas de trabalho gerais sejam agendados em nós de nuvem híbrida por padrão.Rótulo:
alibabacloud.com/nodepool-type: hybridcloud— identifica o tipo do nó para que as políticas de agendamento possam direcioná-lo.
Uma tolerância remove a restrição de agendamento e torna um pod elegível para nós de nuvem híbrida, mas não garante o posicionamento nesses nós. Para garantir o posicionamento, combine a tolerância com uma regra de nodeSelector ou nodeAffinity.
Escolha uma abordagem
|
Abordagem |
Quando usar |
Configuração principal |
|
Permitir (Solução 1) |
Para expandir a capacidade total sem restrições rígidas de localização. Os pods ainda podem ser agendados em outros pools de nós. |
Apenas |
|
Direcionar um pool de nós específico (Solução 2a) |
Quando há necessidade de hardware específico, topologia de rede ou residência de dados para um único pool. |
|
|
Direcionar qualquer pool de nós de nuvem híbrida (Solução 2b) |
Cargas de trabalho que devem executar on-premises, mas em qualquer pool de nós IDC. |
|
|
Baseado em prioridade entre pools (Solução 3) |
Ideal para preferir um pool de nuvem híbrida de menor custo para scale-out e liberar primeiro os nós ECS da nuvem durante o scale-in. |
ResourcePolicy + |
Solução 1: Permitir agendamento em nós de nuvem híbrida
Quando usar: Seu cluster precisa de mais capacidade total e sua carga de trabalho não possui restrições rígidas de posicionamento. Com essa configuração, o agendador considera o pool de nós de nuvem híbrida como um candidato válido, mas os pods ainda podem executar em outros pools de nós ativos.
Configuração principal: Adicione uma entrada tolerations em spec.template.spec:
spec:
template:
spec:
# Allow this pod to run on hybrid cloud nodes.
tolerations:
- key: "nodepool-type"
operator: "Equal"
value: "hybridcloud"
effect: "NoSchedule"
Solução 2: Forçar agendamento em nós de nuvem híbrida
Estas duas sub-soluções garantem o posicionamento dos pods em nós de nuvem híbrida. Escolha com base na precisão necessária para direcionar um pool de nós.
Direcionar um pool de nós específico
Quando usar: Sua carga de trabalho exige um pool de nós de nuvem híbrida específico — por exemplo, um com hardware dedicado, topologia de rede exclusiva ou requisitos rigorosos de residência de dados. Use nodeSelector para fixar os pods a um único pool de nós por ID.
Configuração principal: Adicione tanto tolerations quanto nodeSelector em spec.template.spec:
spec:
template:
spec:
# Core configuration 1: Lift the hybrid cloud scheduling restriction.
tolerations:
- key: "nodepool-type"
operator: "Equal"
value: "hybridcloud"
effect: "NoSchedule"
# Core configuration 2: Pin to a specific node pool by ID.
nodeSelector:
alibabacloud.com/nodepool-id: npxxxxxxxxxxxx
Obtenha o ID do pool de nós na página Node Management > Node Pools do seu cluster.
Direcionar qualquer pool de nós de nuvem híbrida
Quando usar: Sua carga de trabalho deve executar on-premises, mas pode rodar em qualquer pool de nós de nuvem híbrida. O nodeAffinity corresponde a todos os nós com o rótulo hybridcloud, permitindo que os pods se distribuam por todos os pools de nós IDC em vez de ficarem fixos em apenas um.
Configuração principal: Adicione tanto tolerations quanto affinity em spec.template.spec:
spec:
template:
spec:
# Core configuration 1: Lift the hybrid cloud scheduling restriction.
tolerations:
- key: "nodepool-type"
operator: "Equal"
value: "hybridcloud"
effect: "NoSchedule"
# Core configuration 2: Require a hybrid cloud node by label.
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: alibabacloud.com/nodepool-type
operator: In
values:
- hybridcloud
Solução 3: Agendamento baseado em prioridade com ResourcePolicy
Quando usar: Você possui múltiplos pools de nós e deseja realizar scale-out ordenado e scale-in na ordem inversa. Por exemplo, utilize um pool de nós de nuvem híbrida de menor custo como pool principal e um pool de nós ECS na nuvem como overflow:
Scale-out: Os pods são agendados primeiro para o pool de nuvem híbrida. Se os recursos forem insuficientes, eles transbordam para o pool ECS.
Scale-in: Os pods no pool ECS são interrompidos primeiro, preservando a estabilidade dos recursos no pool de nuvem híbrida.
Esta solução requer dois recursos: um ResourcePolicy e uma carga de trabalho que o referencie.
Configuração do ResourcePolicy: Defina a ordem de prioridade de agendamento na lista units e associe a política aos pods alvo usando um selector.
apiVersion: scheduling.alibabacloud.com/v1alpha1
kind: ResourcePolicy
metadata:
name: nginx-priority-policy
spec:
# Match pods with this label.
selector:
app: nginx-priority
# The scheduler tries pools in order. First match wins.
units:
# Priority 1: hybrid cloud node pool (lower cost, preferred)
- resource: ecs
nodeSelector:
alibabacloud.com/nodepool-id: np-pool-a-xxxxxxxxxx
# Priority 2: ECS node pool (overflow)
- resource: ecs
nodeSelector:
alibabacloud.com/nodepool-id: np-pool-b-xxxxxxxxxx
Obtenha os IDs dos pools de nós na página Node Management > Node Pools do seu cluster.
Configuração da carga de trabalho: Adicione o rótulo correspondente e a tolerância de nuvem híbrida ao modelo de pod.
spec:
template:
metadata:
# This label connects the pod to the ResourcePolicy above.
labels:
app: nginx-priority
spec:
# Allow scheduling to the hybrid cloud node pool.
tolerations:
- key: "nodepool-type"
operator: "Equal"
value: "hybridcloud"
effect: "NoSchedule"
-
ResourcePolicy:
-
Deployment:
Aplicação em produção
Não exclua o taint padrão
nodepool-type=hybridcloud:NoScheduledo pool de nós de nuvem híbrida. Esse taint evita que componentes do sistema sejam acidentalmente agendados em nós de nuvem híbrida.Não exclua nem modifique o rótulo padrão
alibabacloud.com/nodepool-type: hybridcloudnos nós de nuvem híbrida. Modificar ou excluir esse rótulo pode afetar o funcionamento normal do pool de nós.