Как добиться 1 узел = 1 под в Kubernetes
У меня 5 узлов в кластере (Тест). Я пометил их следующим образом:
Узлы:
- namespace =A
- namespace =A
- пространство имен =B
- пространство имен =B
- пространство имен =C
Я применил taints и терпимости, nodeAffinity и podAntiAffinity. Наши узлы имеют автоматическое масштабирование. Однако наши узлы не увеличивались, все поды собираются в одном узле. Я прочитал в этой ссылке Kubernetes: равномерно распределяйте реплики по кластеру, что использование podAntiAffinity, node Affinity, taints и допусков не гарантирует этого требования. Наше требование: 1 модуль должен быть равномерно развернут на узлах и соответственно масштабироваться.
Что мне не хватает?
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: prometheus
labels:
app: prometheus
spec:
serviceName: "prometheus"
selector:
matchLabels:
name: prometheus
template:
metadata:
labels:
name: prometheus
app: prometheus
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: namespace
operator: In
values:
- A
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- prometheus
topologyKey: kubernetes.io/hostname
weight: 100
containers:
- name: prometheus
image: quay.io/prometheus/prometheus:v2.6.0
resources:
limits:
memory: 200Mi
requests:
cpu: 100m
memory: 200Mi
terminationGracePeriodSeconds: 30
tolerations:
- key: namespace
operator: Equal
value: A
1 ответ
Ты пробовал
nodeSelector
который будет планировать модуль на узле, к которому вы прикрепили метку?
nodeSelector:
namespace: A