Как равномерно развернуть поды на всех узлах в Kubernetes?

У меня есть несколько кластеров Kubernetes с разными #of узлов в каждом. И в моем развертывании конфигурации есть "реплики: # узлы". Не существует определенной конфигурации для планирования этого модуля, но после развертывания я вижу странное поведение с точки зрения распределения модулей по узлам.

Пример:

Для кластера из 30 узлов (30 реплик) все 30 реплик подов распределены только по 25 узлам, а остальные 5 узлов идеально подходят для кластера. Подобные случаи для многих других различных кластеров, и это количество меняется при каждом новом / повторном развертывании.

Вопрос:

Я хочу распределить реплики своих модулей по всем узлам. Если я установил "replicas: #nodes", то у меня должна быть одна реплика пода в каждом узле. Если я увеличиваю / удваиваю количество реплик, оно должно распределяться равномерно. есть ли какая-то конкретная конфигурация в развертывании yaml для Kubernetes?

Конфигурация с узлом AntiAffinity, но он все равно ведет себя как указано выше. Пробовал с "requiredDuringSchedulingIgnoredDuringExecution", и тот действительно развернул по одному модулю в каждом узле, но если я увеличиваю количество реплик или какой-либо узел выходит из строя во время развертывания, тогда все развертывание завершается неудачей.

metadata:
  labels:
    app: test1
spec:
  affinity:
    podAntiAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 100
        podAffinityTerm:
          labelSelector:
            matchExpressions:
            - key: app
              operator: In
              values:
              - test1
          topologyKey: kubernetes.io/hostname

1 ответ

Если вам нужно развертывание по 1 модулю на узел, вы должны использовать daemonSet вместо replicaSet. В качестве альтернативы, если вам нужно более 1 модуля на узел и вы все еще хотите, чтобы распределение модулей было в основном равномерным, вы можете использовать антиаффинность модуля, как я обсуждал в этой статье.

См . Ограничения распространения топологии подов https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/, эта функция дает вам разрешение точно определить, как ваши поды будут распределяться по вашему кластеру на основе регионов, зоны, узлы и другие определяемые пользователем домены топологии.

Таким образом, вы можете определить свои собственные правила распределения стручков.

Другие вопросы по тегам