Это произошло потому, что Kubernetes не заботится о распространении.У этого есть механизм для обеспечения определенного распределения, названного Pod Affinity.Для раздачи капсул всем работникам вы можете использовать Pod Affinity .Кроме того, вы можете использовать мягкое сходство (различия, которые я объясняю здесь ), оно не является строгим и позволяет порождать все ваши стручки.Например, StatefulSet будет выглядеть следующим образом:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: my-app
replicas: 3
template:
metadata:
labels:
app: my-app
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- my-app
topologyKey: kubernetes.io/hostname
terminationGracePeriodSeconds: 10
containers:
- name: app-name
image: k8s.gcr.io/super-app:0.8
ports:
- containerPort: 21
name: web
Этот StatefulSet будет пытаться порождать каждый модуль у нового работника;если рабочих не хватает, то будет запущен модуль в узле, где модуль уже существует.