其他控制器

1.ReplicationController和ReplicaSet控制器

在早先版本的Kubernetes中,ReplicationController是最早提供的控制器,后来ReplicaSet控制器出现并替代了ReplicationController

在Deployment控制器出现后,ReplicationController和ReplicaSet控制器都很少再直接使用了。

虽然ReplicationController和ReplicaSet控制器都是基于Pod而设计的,增加了水平伸缩功能,提高了可靠性,但它们缺少在 其他复杂对象中具有更细粒度的生命周期管理功能。

在当前版本的Kubernetes中一般直接创建Deployment控制器,且由Deployment控制器自动托管ReplicaSet控制器,用户无须操心

ReplicaSet控制器,完全可以当它不存在

再次看一下deployment与rs的图

image0

虽然现在一般不再直接使用ReplicaSet控制器,但如果要直接使用ReplicaSet控制器也可以,其模板定义和Deployment控制器的类 似,如下所示。

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: examplereplicaset
spec:
  replicas: 3
  selector:
    matchLabels:
      example: replicasetfornginx
  template:
    metadata:
      labels:
        example: replicasetfornginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

因为直接创建的ReplicaSet控制器不能由Deployment控制器托管,所以ReplicaSet控制器也不具有滚动更新、版本查看和回滚等功 能。

  • Deployment控制器以ReplicaSet控制器为基础,是更高一级的概念,增加了更灵活的生命周期管理功能,如滚动更新和回滚。

  • Deployment控制器会维持指定数量的Pod副本,多退少补,时刻保持数量恒定。还可以对副本数量进行动态伸缩

  • Deployment控制器的历史记录与回滚其实是基于ReplicaSet控制器的,一个版本对应一个ReplicaSet控制器。