编辑nodeSelector不会重新安排ReplicaSet中的pod

时间:2018-02-06 10:30:26

标签: docker kubernetes kubectl 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

这会在标记为云的节点中运行pod。现在我使用命令

更改nodeSelector
kubectl edit rs/nginx-test

并将nodeSelector更改为edge。但是,pod不会移动到边缘节点。这适用于部署,但不适用于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 个答案:

答案 0 :(得分:0)

官方Kubernetes文档建议您使用部署来创建ReplicaSet,而不是直接使用ReplicaSet。

“ReplicaSet确保在任何给定时间运行指定数量的pod副本。但是,Deployment是一个更高级别的概念,用于管理ReplicaSet并为pod提供声明性更新以及许多其他有用的功能。 ,我们建议使用Deployments而不是直接使用ReplicaSet,除非您需要自定义更新编排或根本不需要更新。“

https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/

单独使用ReplicaSet并不是闻所未闻,但通常不推荐使用。

如果部署适合您,我建议坚持使用,除非您使用ReplicaSet进行部署不适用的某些自定义操作。