微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我怎么知道什么时候应该使用无状态 Pod 或有状态的 Pod?

如何解决我怎么知道什么时候应该使用无状态 Pod 或有状态的 Pod?

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

解决方法

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

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

有状态 Pod 的问题在于状态。 Kubernetes 为您提供了一些 choices on where to store data,但其中大部分一次只能在一个 Pod 上使用;如果您有多个副本,那么每个副本通常都需要自己的本地存储,并且应用程序需要知道如何协调它的多个副本。 (或者,如果您可以设置诸如 NFS 服务器之类的东西,应用程序需要知道如何处理并发写入。)在操作上,您需要知道如何备份和恢复所有正在创建的单个小卷方式。

标准方法是尽量减少存储状态的位置,并使用来自无状态应用程序的网络 I/O 将内容放置到位。状态甚至不需要在集群中:如果您的应用程序在 AWS 中运行,您可以拥有主要将数据存储在 RDS 托管的关系数据库和 Amazon 的 S3 对象存储中但在本地不保留任何内容的容器,然后您可以使用正常的集群外存储的备份和管理方法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。