【问题标题】:how do i know when should i use a stateless pod or a stateful one?我怎么知道什么时候应该使用无状态 Pod 或有状态 Pod?
【发布时间】:2021-09-18 17:23:50
【问题描述】:

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

【问题讨论】:

    标签: docker kubernetes stateless stateful


    【解决方案1】:

    对于典型的 Kubernetes Pod,它将由更高级别的控制器(如 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 对象存储中的容器,但在本地不保留任何内容,然后您可以使用普通的这些集群外存储的备份和管理方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-03
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-03
      相关资源
      最近更新 更多