副本集 (Replica Set)

副本集 (RS, Replica Set) 被认为 是 "升级版" 的 RC。

RS 也是用于保证与 label selector 匹配的 pod 数量维持在期望状态。副本集对象一般不单独使用,而是作为 Deployment 的理想状态参数使用。

在新版本的 Kubernetes 中建议使用 ReplicaSet 来取代 ReplicationController。ReplicaSet 跟 ReplicationController 没有本质的不同,只是名字不一样,并且 ReplicaSet 支持集合式的 selector。

虽然 ReplicaSet 可以独立使用,但一般还是建议使用 Deployment 来自动管理 ReplicaSet,这样就无需担心跟其他机制的不兼容问题(比如 ReplicaSet 不支持 rolling-update 但 Deployment 支持)。

RS 与 RC 的区别

RC 只支持基于等式的 selector(env=dev 或 environment!=qa),但 RS 还支持新的,基于集合的 selector(version in (v1.0, v2.0)或 env notin (dev, qa)),这对复杂的运维管理很方便。

升级方式

  • RS 不能使用 kubectlrolling-update 进行升级
  • kubectl rolling-update 专用于 rc
  • RS 升级使用 deployment 或者 kubectl replace 命令

社区引入这一 API 的初衷是用于取代 vl 中的 RC,也就是说当 v1 版本被废弃时,RC 就完成了它的历史使命,而由 RS 来接管其工作。

yaml 示例

apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
  name: lykops-rs
  labels:
    software: apache
    project: lykops
    app: lykops-rs
    version: v1
spec:
  replicas: 2
  selector:
    matchLabels:
      name: lykops-rs
      software: apache
      project: lykops
      app: lykops-rs
      version: v1
  template:
    metadata:
      labels:
        name: lykops-rs
        software: apache
        project: lykops
        app: lykops-rs
        version: v1
    spec:
      containers:
        - name: lykops-rs
          image: web:apache
          command: ["sh", "/etc/run.sh"]
          ports:
            - containerPort: 80
              name: http

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress