Controller Manager

Controller Manager 由 kube-controller-manager 和 cloud-controller-manager 组成, 是Kubernetes 的大脑, 它通过 apiserver 监控整个集群的状态, 并确保集群处于预期的工作状态。

kube-controller-manager 由一系列的控制器组成

1 Replication Controller
2 Node Controller
3 CronJob Controller
4 DaemonSet Controller
5 Deployment Controller
6 Endpoint Controller
7 Garbage Collector
8 Namespace Controller
9 Job Controller
10 Pod AutoScaler
11 RelicaSet
12 Service Controller
13 ServiceAccount Controller
14 StatefulSet Controller
15 Volume Controller
16 Resource quota Controller

cloud-controller-manager 在 Kubernetes 启用 Cloud Provider 的时候才需要, 用来配合云服务
提供商的控制, 也包括一系列的控制器

1 Node Controller
2 Route Controller
3 Service Controller

从v1.6开始,cloud provider已经经历了几次重大重构,以便在不修改Kubernetes核心代码的同时构建自定义的云服务商支持

常见Pod控制器及含义

ReplicaSet:适合无状态的服务部署

用户创建指定数量的pod副本数量,确保pod副本数量符合预期状态,并且支持滚动式自动扩容和
缩容功能。

ReplicaSet主要三个组件组成:

  • 用户期望的pod副本数量
  • 标签选择器,判断哪个pod归自己管理
  • 当现存的pod数量不足,会根据pod资源模板进行新建

帮助用户管理无状态的pod资源,精确反应用户定义的目标数量,但是RelicaSet不是直接使用的
控制器,而是使用Deployment。

deployment:适合无状态的服务部署

工作在ReplicaSet之上,用于管理无状态应用,目前来说最好的控制器。支持滚动更新和回滚功
能,还提供声明式配置。

StatefullSet:适合有状态的服务部署

DaemonSet:一次部署,所有的node节点都会部署

例如一些典型的应用场景:

  • 运行集群存储 daemon,例如在每个Node上运行 glusterd、ceph
  • 在每个Node上运行日志收集 daemon,例如 fluentd、 logstash
  • 在每个Node上运行监控 daemon,例如 Prometheus Node Exporter

用于确保集群中的每一个节点只运行特定的pod副本,通常用于实现系统级后台任务。比如ELK服务

特性:服务是无状态的

服务必须是守护进程

Job:一次性的执行任务。 只要完成就立即退出,不需要重启或重建

Cronjob:周期性的执行任务。 周期性任务控制,不需要持续后台运行

posted @ 2021-09-22 10:57  请务必优秀  阅读(272)  评论(0编辑  收藏  举报