副本集 (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/v1beta1kind: ReplicaSetmetadata:name: lykops-rslabels:software: apacheproject: lykopsapp: lykops-rsversion: v1spec:replicas: 2selector:matchLabels:name: lykops-rssoftware: apacheproject: lykopsapp: lykops-rsversion: v1template:metadata:labels:name: lykops-rssoftware: apacheproject: lykopsapp: lykops-rsversion: v1spec:containers:- name: lykops-rsimage: web:apachecommand: ["sh", "/etc/run.sh"]ports:- containerPort: 80name: http
