StatefulSet是 Kubernetes 对象,用于一致地部署有状态的应用程序组件。作为 StatefulSet 的一部分创建的 Pod 被赋予了持久标识符,即使重新调度它们也会保留这些标识符。
StatefulSet 可以部署需要可靠识别特定副本、按预定义顺序推出更新或稳定访问存储卷的应用程序。它们适用于许多不同的用例,但最常用于数据库和其他类型的持久数据存储。
在本文中,您将了解 StatefulSet 是什么、它们如何工作以及何时应该使用它们。我们还将介绍它们的局限性以及其他 Kubernetes 对象是更好选择的情况。
什么是有状态集?
使 Pod 成为 StatefulSet 的一部分会指示 Kubernetes 以有保证的方式调度和扩展它们。每个 Pod 都会被分配一个唯一的身份,任何替换的 Pod 都会保留该身份。
Pod 名称后缀有一个序号索引,用于定义其在调度操作期间的顺序。一个包含三个副本的 StatefulSetmysql将创建以下命名 Pod:
- mysql-1
- mysql-2
- mysql-3
Pod 使用它们的名称作为它们的主机名,以便需要可靠访问 StatefulSet 的第二个副本的其他服务可以连接