🐗扩展知识

ReplicationController(RC)

ReplicationController 确保在任何时候都有特定数量的 Pod 副本处于运行状态。

apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    app: nginx
  template:
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

· spec.replicas: 指定Pod副本数量,默认为1

· spec.selector: RC通过该属性来筛选要控制的Pod

· spec.template.metadata.labels: 注意这里的Pod的labels要和spec.selector相同,这样RC就可以来控制当前这个Pod了。

注意spec.selector和spec.template.metadata.labels这两个字段必须相同,否则会创建失败的,当然我们也可以不写spec.selector,这样就默认与Pod模板中的metadata.labels相同了。

Replication Set(RS)

Replication Set简称RS,官方已经推荐我们使用RS和Deployment来代替RC了,实际上RS和RC的功能基本一致,目前唯一的一个区别就是RC只支持基于等式的selector

kubectl命令行工具中关于RC的大部分命令同样适用于我们的RS资源对象

Deployment

主要职责和RC一样的都是保证Pod的数量和健康,二者大部分功能都是完全一致的,我们可以看成是一个升级版的RC控制器

官方组件kube-dns、kube-proxy也都是使用的Deployment来管理

特性:

· RC的全部功能:Deployment具备上面描述的RC的全部功能

· 事件和状态查看:可以查看Deployment的升级详细进度和状态

· 回滚:当升级Pod的时候如果出现问题,可以使用回滚操作回滚到之前的任一版本

· 版本记录:每一次对Deployment的操作,都能够保存下来,这也是保证可以回滚到任一版本的基础

· 暂停和启动:对于每一次升级都能够随时暂停和启动

一个Deployment拥有多个Replica Set,而一个Replica Set拥有一个或多个Pod。

一个Deployment控制多个rs主要是为了支持回滚机制,每当Deployment操作时,Kubernetes会重新生成一个Replica Set并保留,以后有需要的话就可以回滚至之前的状态。

Job 和 Cronjob

Job负责处理任务,即仅执行一次的任务

CronJob则就是在Job上加上了时间调度。

jobs

Last updated

Was this helpful?