ljzsdut
GitHubToggle Dark/Light/Auto modeToggle Dark/Light/Auto modeToggle Dark/Light/Auto modeBack to homepage
Edit page

2.3 K8s控制器资源对象之概述

二、控制器资源对象

Pod控制器是什么?

Pod控制器:用于管理pod,将pod的状态调整为用户所期望的状态

Pod控制器分类

ReplicationController(RC)

  • ReplicationController:简称rc,已废弃,不再推荐使用

ReplicaSet(RS)

  • ReplicaSet:新一代的RC,核心作用:保证Pod副本数量为用户期望状态、支持扩缩容机制。不建议直接使用,它会被deployment调用。主要由如下三个组件定义
    • 用户期望副本数:replicas
    • 标签选择器:selector
    • pod资源模板:template[.metadate|.spec]

Deployment

  • Deployment:工作在ReplicaSet之上,通过控制ReplicaSet来控制Pod;支持扩缩容、滚动更新、回滚、支持更新策略、提供声明式配置功能(支持动态修改)。特点:管理无状态应用+应用是持续运行的pod

rs与deployment关系.png

结合上图我们可以知道:一个Deployment可以管理多个RS(默认管理10个RS),但是最终生效的只有一个。例如v2版本的RS生效后,v1的RS就失效了,但是不会删除,一旦要回滚的时候,直接立即将Deployment指向v1的RS,实现快速回滚,无需重新创建资源清单。

DaemonSet(ds)

  • DaemonSet:用于确保集群中的每一个Node+Master节点(准确说是满足调度条件的所有节点)或集群中满足条件的部分节点上只运行一个特定的Pod副本(如果pod不能容忍Master的污点,Master是不能运行Pod的);新增节点时,新节点上会自动运行一个该Pod;特点:管理无状态应用+应用是持续运行的pod;主要需要如下定义:
    • 标签选择器:selector,用于确保节点上的Pod副本数始终为1个/节点,总副本数跟节点数量有关。
    • pod资源模板:template
      • nodeName、nodeSelector、node污点:用来选择集群中满足条件的部分节点,缺省为集群的每一个节点

Job&Cronjob

  • Job:完成任务后pod退出,否则重启;job只能执行一次作业,如果是周期任务,使用Cronjob。特点:应用pod无需持续运行
  • Cronjob:周期性运行任务,完成后Pod退出,否则重建;特点:应用pod无需持续运行

StatefulSet

  • StatefulSet:管理有状态的Pod,例如MySQL、Redis

HPA

  • HPA(Horizontal Pod Autoscaling)