Replication Controller(RC)
Replication Controller简称RC,RC是Kubernetes系统中的核心概念之一,简单来说,RC可以保证在任意时间运行Pod的副本数量,能够保证Pod总是可用的。如果实际Pod数量比指定的多那就结束掉多余的,如果实际数量比指定的少就新启动一些Pod,当Pod失败、被删除或者挂掉后,RC都会去自动创建新的Pod来保证副本数量,所以即使只有一个Pod,我们也应该使用RC来管理我们的Pod。
YAML示例
apiVersion: v1
kind: ReplicationController
#指定类型为ReplicationController
metadata:
name: rc-demo
labels:
name: rc
spec:
replicas: 3
#指定Pod
副本数量,默认为1
selector:
#通过该属性来筛选要控制的Pod
name: rc
template:
#这里就是我们之前的Pod
的定义的模块,但是不需要apiVersion
和kind
了
metadata:
labels:
name: rc
#这里的Pod
的labels
要和spec.selector
相同才可以控制
spec:
containers:
- name: nginx-demo
image: nginx
ports:
- containerPort: 80
验证
kubectl create -f test.yaml #创建pod
kubectl get rc #查看rc

kubectl describe rc rc-demo #查看rc详细信息

Replication Set(RS)
Replication Set简称RS,随着Kubernetes的高速发展,官方已经推荐我们使用RS和Deployment来代替RC了,实际上RS和RC的功能基本一致,目前唯一的一个区别就是RC只支持基于等式的selector(env=dev或environment!=qa),但RS还支持基于集合的selector(version in (v1.0, v2.0)),这对复杂的运维管理就非常方便了。
kubectl命令行工具中关于RC的大部分命令同样适用于我们的RS资源对象。不过我们也很少会去单独使用RS,它主要被Deployment这个更加高层的资源对象使用,除非用户需要自定义升级功能或根本不需要升级Pod,在一般情况下,我们推荐使用Deployment而不直接使用Replica Set。