Если вы хотите развернуть модули на всех узлах, вам нужно изменить предпочитаемый параметр DuringSchedulingIgnoredDuringExecution.
Изменить
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 70
preference:
matchExpressions:
- key: ikind
operator: In
values:
- spot
на
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 70
preference:
matchExpressions:
- key: ikind
operator: In
values:
- spot
- normal
Теперь это будет развернут на обоих узлах, с ikind:spot
и ikind:normal
, до того, как это было только спот.
Я проверил его на 3 узлах gke, и все, кажется, работает нормально.
pod-test-54dc97fbcb-9hvvm 1/1 Running gke-cluster-1-default-pool-1ffaf1b8-gmhb <none> <none>
pod-test-54dc97fbcb-k2hv2 1/1 Running gke-cluster-1-default-pool-1ffaf1b8-gmhb <none> <none>
pod-test-54dc97fbcb-nqd97 1/1 Running gke-cluster-1-default-pool-1ffaf1b8-7c25 <none> <none>
pod-test-54dc97fbcb-zq9df 1/1 Running gke-cluster-1-default-pool-1ffaf1b8-jk6t <none> <none>
pod-test-54dc97fbcb-zvwhk 1/1 Running gke-cluster-1-default-pool-1ffaf1b8-7c25 <none> <none>
Это хорошо описано здесь
apiVersion: v1
kind: Pod
metadata:
name: with-node-affinity
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/e2e-az-name
operator: In
values:
- e2e-az1
- e2e-az2
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: another-node-label-key
operator: In
values:
- another-node-label-value
containers:
- name: with-node-affinity
image: k8s.gcr.io/pause:2.0
Это правило соответствия узлов говорит, что модуль может быть размещен только на узле с меткой, ключом которой является kubernetes.io/e2e -az-name и значением которого является e2e-az1 или e2e-az2. Кроме того, среди узлов, удовлетворяющих этому критерию, следует отдавать предпочтение узлам с меткой, ключом которой является ключ-другого-узла-метки, а значением которого является значение-другого-узла-метки.