什么是 Kubernetes StatefulSet?你什么时候应该使用它们?

在这里插入图片描述
StatefulSet是 Kubernetes 对象,用于一致地部署有状态的应用程序组件。作为 StatefulSet 的一部分创建的 Pod 被赋予了持久标识符,即使重新调度它们也会保留这些标识符。

StatefulSet 可以部署需要可靠识别特定副本、按预定义顺序推出更新或稳定访问存储卷的应用程序。它们适用于许多不同的用例,但最常用于数据库和其他类型的持久数据存储。

在本文中,您将了解 StatefulSet 是什么、它们如何工作以及何时应该使用它们。我们还将介绍它们的局限性以及其他 Kubernetes 对象是更好选择的情况。

什么是有状态集?

使 Pod 成为 StatefulSet 的一部分会指示 Kubernetes 以有保证的方式调度和扩展它们。每个 Pod 都会被分配一个唯一的身份,任何替换的 Pod 都会保留该身份。
Pod 名称后缀有一个序号索引,用于定义其在调度操作期间的顺序。一个包含三个副本的 StatefulSetmysql将创建以下命名 Pod:

  • mysql-1
  • mysql-2
  • mysql-3

Pod 使用它们的名称作为它们的主机名,以便需要可靠访问 StatefulSet 的第二个副本的其他服务可以连接到mysql-2. 即使运行的特定 Podmysql-2稍后被重新安排,它的身份也会传递给它的替代者。

StatefulSets 还强制按照创建的相反顺序删除 Pod。如果 StatefulSet 缩小为一个副本,mysql-3则保证先退出,然后再退出mysql-2。此行为在整个 StatefulSet 被删除时不适用,并且可以通过将 Statef

猜你喜欢

转载自blog.csdn.net/wlcs_6305/article/details/127174435
今日推荐