Controller:
Kubernetes通常不会直接创建Pod,而是通过Controller来管理pod的。
Controller中定义了Pod的部署属性(比如部署几个副本、在什么样的Node上运行等)。
为了满足不同的业务场景,Kubernetes 提供了多种 Controller,包括 Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job 等。
Deployment:最常用的 Controller,比如前面在线教程中就是通过创建 Deployment 来部署应用的。Deployment 可以管理 Pod 的多个副本,并确保 Pod 按照期望的状态运行。ReplicaSet:实现了 Pod 的多副本管理。使用 Deployment 时会自动创建 ReplicaSet,也就是说 Deployment 是通过 ReplicaSet 来管理 Pod 的多个副本,我们通常不需要直接使用 ReplicaSet。ReplicaSet 跟 ReplicationController 没有本质的不同, 只是名字不一样, 并且ReplicaSet 支持集合式的 selector( ReplicationController 仅支持等式) 。DaemonSet:用于每个 Node 最多只运行一个 Pod 副本的场景。正如其名称所揭示的,DaemonSet 通常用于运行 daemon。StatefuleSet:能够保证 Pod 的每个副本在整个生命周期中名称是不变的。而其他 Controller 不提供这个功能,当某个 Pod 发生故障需要删除并重新启动时,Pod 的名称会发生变化。同时 StatefuleSet 会保证副本按照固定的顺序启动、更新或者删除。Job:用于运行结束就删除的应用。而其他 Controller 中的 Pod 通常是长期持续运行。CronJob:定时任务