Kubernetes上无状态应用程序的StatefulSets与部署

Kubernetes上无状态应用程序的StatefulSets与部署,kubernetes,kubernetes-deployment,kubernetes-statefulset,Kubernetes,Kubernetes Deployment,Kubernetes Statefulset,我找到了大量的文章和文档,描述了在Kubernetes上部署有状态应用程序时,有状态集的优势。我没有弄清楚的是相反的:与部署相比,statefulset的缺点,特别是对于无状态应用程序 有人能解释一下为什么不总是对有状态和无状态应用程序都使用statefulset吗?最基本的区别是,您可以使用statefulset持久化pod级状态。使用volumeClaimTemplates,每个副本将获得一个状态为Set的唯一PersistentVolumeClaim,而所有副本将与部署共享Persiste

我找到了大量的文章和文档,描述了在Kubernetes上部署有状态应用程序时,有状态集的优势。我没有弄清楚的是相反的:与部署相比,statefulset的缺点,特别是对于无状态应用程序


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

最基本的区别是,您可以使用statefulset持久化pod级状态。使用volumeClaimTemplates,每个副本将获得一个状态为Set的唯一PersistentVolumeClaim,而所有副本将与部署共享PersistentVolumeClaim。这是以状态集的缓慢放大和缩小为代价的


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

我们对无状态应用程序使用statefulset,主要是因为序列命名后缀。它运行良好,但除了故障情况,您必须手动删除故障吊舱才能恢复。