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的定义的模块,但是不需要apiVersionkind
metadata:
labels:
name: rc #这里的Podlabels要和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。