我如何知道什么时候应该使用无状态pod或有状态pod



我是Kubernetes和Docker的新手,我正在研究无状态和有状态的概念,我知道无状态微服务不会在主机上存储数据,而有状态微服务需要在提供请求的主机上存储某种存储,但如果由我决定,我会一直使用有状态的,为什么我要使用无状态pod?无国籍的好处是什么?

对于典型的Kubernetes Pod,它将由更高级别的控制器(如Deployment(管理。您可以将Deployment设置为具有replicas: 3,这样,如果其中一个失败,其他两个可以承担负载。在更新时,现有的Pod将被删除并重新创建。如果负载很重,您可以设置HorizontalPodAutoscaler来增加副本数量,这将在需要时创建更多的pod。

如果您的容器是无状态的,并且对kubectl delete pod没有任何影响,那么所有这些都非常简单。

有状态pod的问题在于状态。Kubernetes为您提供了一些存储数据的选择,但大多数数据一次只能在一个pod上使用;如果你有多个副本,那么每个副本通常都需要自己的本地存储,应用程序需要知道如何协调它的多个副本,您需要知道如何备份和恢复在此过程中创建的所有单个小卷。

一种标准的方法是尽量减少存储状态的地方的数量,并使用来自无状态应用程序的网络I/O将东西放在适当的位置。状态甚至不需要在集群中:如果你的应用程序在AWS中运行,你可以有一些容器,主要将数据存储在RDS托管的关系数据库和亚马逊的S3对象存储中,但在本地什么都不保留,然后你可以对集群外的存储使用正常的备份和管理方法。

最新更新