Deployment、StatefulSet 、ReplicaSet、Replication Controller之间的区别

208 阅读1分钟

前置知识

Deployment、StatefulSet 和 ReplicaSet 以及 Replication Controller(官方也推荐用 Deployment 取代 RC 来部署服务)主要管控 Pod 程序服务

Replication Controller和ReplicaSet以及Deployment

Replication Controller 是 Kubernetes 早期版本中使用的一种资源对象,用于确保特定数量的 Pod 始终在运行。它通过定义副本数和 Pod 模板来创建和管理 Pod 的副本集。当 Pod 发生故障或被删除时,Replication Controller 会自动创建新的 Pod,以确保指定数量的副本在运行。

Deployment 是 Kubernetes 1.2 版本引入的资源对象,它提供了更强大和灵活的应用程序管理功能。Deployment 基于 Replication Controller 的概念,但增加了一些重要的功能,如滚动升级、回滚、部署历史记录等。

Replication Controller 同时也是 ReplicaSet 的前身,Kubernetes通过 Deployment 自动生成 ReplicaSet。Replication Controller和ReplicaSet保证了 Pod 资源是符合配置要求的,但镜像版本升级是不会触发更新的,也不能让运维兄弟每次都手动。由此加入 Deployment 的优点在于,只需要做声明式的升级,仅改动一个字段,Kubernetes 就会接管后续所有的升级动作,并且Deployment会默认保存俩版ReplicaSet(只保留旧的ReplicaSet,不保留旧pod),所以可以做到回滚。

3746a5ef97d037d04b2f18b6d97f6bc5.png

Deployment和StatefulSet

Deployment 是用于管理无状态服务的资源对象,而 StatefulSet 则是专门用于管理有状态服务的资源对象。