Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ Cloud Container Engine/ Perguntas frequentes/ Carga de trabalho/ Políticas de agendamento/ Como distribuir uniformemente vários pods para cada nó?
Atualizado em 2025-05-23 GMT+08:00

Como distribuir uniformemente vários pods para cada nó?

O componente kube-scheduler no Kubernetes é o agendamento de pods responsável. Para cada pod recém-criado ou outros pods não agendados, o kube-scheduler seleciona um nó ideal deles para ser executado. O kube-scheduler seleciona um nó para um pod em uma operação de 2 etapas: filtragem e pontuação. Na etapa de filtragem, todos os nós onde é possível agendar o pod são filtrados. Na etapa de pontuação, o kube-scheduler classifica os nós restantes para escolher o posicionamento do pod mais adequado. Finalmente, o kube-scheduler agenda o pod para o nó com a pontuação mais alta. Se houver mais de um nó com as pontuações iguais, o kube-scheduler seleciona um deles aleatoriamente.

BalancedResourceAllocation é apenas uma das prioridades de pontuação. Outros itens de pontuação também podem causar distribuição desigual. Para obter detalhes sobre agendamento, consulte Agendador do Kubernetes e Políticas de agendamento.

Você pode configurar políticas de anti-afinidade de pods para distribuir pods uniformemente em nós diferentes.

Exemplo:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: nginx
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: container-0
          image: nginx:alpine
          resources:
            limits:
              cpu: 250m
              memory: 512Mi
            requests:
              cpu: 250m
              memory: 512Mi
      affinity:
        podAntiAffinity:                   # Workload anti-affinity
          preferredDuringSchedulingIgnoredDuringExecution:    # Ensure that the following conditions are met:
            - podAffinityTerm:
                labelSelector:                       # Select the label of the pod, which is anti-affinity with the workload.
                  matchExpressions:
                    - key: app
                      operator: In
                      values:
                        - nginx
                namespaces:
                  - default
                topologyKey: kubernetes.io/hostname     # It takes effect on the node.
      imagePullSecrets:
        - name: default-secret