Вопросы о планировании реплик Statefulset - PullRequest
0 голосов
/ 06 мая 2020

Могу ли я как-нибудь сказать Kuberbetes, как запланировать реплики в statefulset? Например, у меня есть узлы, разделенные на 3 разные зоны доступности (AZ). Я обозначил эти узлы соответствующим образом. Теперь я хочу, чтобы K8s поместил по одной реплике в каждую зону доступности на основе метки узла. Спасибо

Ответы [ 2 ]

2 голосов
/ 06 мая 2020

Модули всегда будут пытаться планировать для разных узлов, для достижения того, что вы ищете, вы можете попробовать использовать DaemonSet, что позволит использовать только один из этих типов модулей в каждом узле.

Кроме того, вы можете использовать антиродство на основе уже запланированных модулей в этом узле.

https://kubernetes.io/docs/concepts/configuration/assign-pod-node/

1 голос
/ 06 мая 2020

Функция, которую вы ищете, называется Pod Anti-Affinity и может быть указана как таковая:

apiVersion: apps/v1
kind: StatefulSet
[..]
spec:
  template:
    spec:
      affinity:
        nodeAffinity: {}
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - podAffinityTerm:
              labelSelector:
                matchLabels:
                  app: myapp
              topologyKey: az
            weight: 100
[..]

Начиная с Kubernetes 1.18, существует также Pod Topology Spread. Ограничения , что является более удобным способом указать эти правила анти-сродства.

...