Редактирование nodeSelector не переставляет модули в ReplicaSet
Я создал следующий ReplicaSet
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
name: nginx-test
spec:
replicas: 2
template:
metadata:
name: nginx
namespace: default
labels:
env: beta
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
nodeSelector:
domain: cloud
Это запускает стручки в узле, отмеченном как облако. Теперь я меняю nodeSelector с помощью команды
kubectl edit rs/nginx-test
И измените nodeSelector на край. Однако стручки не перемещаются к краевому узлу. Это работает для развертывания, но не для ReplicaSet. Есть идеи
Вот мои 2 узла:
NAME STATUS AGE VERSION LABELS
x1 Ready 5d v1.8.4 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,domain=cloud,kubernetes.io/hostname=xxxx,node-role.kubernetes.io/master=
x2 Ready 5d v1.8.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,domain=edge,kubernetes.io/hostname=xxxx
1 ответ
Официальная документация Kubernetes рекомендует использовать Deployment, который создает ReplicaSets, а не использовать ReplicaSets напрямую.
"ReplicaSet гарантирует, что указанное количество реплик pod запущено в любой момент времени. Однако Deployment - это концепция более высокого уровня, которая управляет ReplicaSets и предоставляет декларативные обновления для pod вместе с множеством других полезных функций. Поэтому мы рекомендуем использование Deployments вместо непосредственного использования ReplicaSets, если только вам не требуется настраиваемая оркестровка обновлений или вообще не требуются обновления ".
https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/
Это не случайно использовать сам ReplicaSet, но обычно не рекомендуется.
Если развертывание работает для вас, я рекомендую придерживаться этого, если только вы не используете ReplicaSets для некоторых пользовательских вещей, для которых развертывания не работают.