Kubernetes 上无状态应用程序的 StatefulSet 与 Deployment

chr*_*vdb 5 kubernetes kubernetes-deployment kubernetes-statefulset

我发现大量文章和文档描述了 Kubernetes 上有状态应用程序的 StatefulSet 相对于 Deployment 的优势。我无法弄清楚的是相反的情况:与 Deployments 相比,StatefulSet 的缺点,特别是对于无状态应用程序。

有人可以解释一下为什么不总是对有状态和无状态应用程序使用 StatefulSets 吗?

Sha*_*k V 4

最基本的区别是,您将能够使用有状态集来持久保存Pod 级别的状态。使用volumeClaimTemplates,每个副本将获得一个具有statefulset的唯一PersistentVolumeClaim,而所有副本将与部署共享PersistentVolumeClaim。这是以有状态集缓慢扩展和缩小为代价的。

部署还具有与“部署”相关的很酷的功能,例如使用maxSurge 和 maxUnavailable 进行滚动更新。