本页面介绍如何在 Google Kubernetes Engine (GKE) 中使用 StatefulSet 对象。您还可以了解如何部署有状态应用。
StatefulSet 简介
StatefulSet 表示一组具有唯一持久身份和稳定主机名的 Pod。无论这些 Pod 调度到何处,GKE 都会对其进行维护。任何指定 StatefulSet Pod 的状态信息和其他弹性数据都存放在与该 StatefulSet 中的每个 Pod 关联的永久性卷中。StatefulSet Pod 可以随时重启。
对于无状态应用,请使用 Deployment。
StatefulSet 在 GKE 和 Kubernetes 中的功能类似。本文档介绍了所有特定于 GKE 的注意事项。如需了解 StatefulSet 的工作原理,请参阅有关 StatefulSet 的 Kubernetes 文档。
规划 StatefulSet 的网络
StatefulSet 以永久性卷和唯一网络身份(主机名)的形式提供永久性存储空间。下表包含应用运营商在配置 StatefulSet 时应该注意的事项:
网络注意事项 | 说明 | 最佳实践 |
---|---|---|
GKE Service,而不是固定 IP 地址 |
虽然 Pod 副本具有唯一的序数索引,支持基于每个副本的卷和网络身份(主机名)识别,但分配给副本的 IP 地址可能会在 GKE 重新调度或逐出 Pod 时发生变化。 |
为缓解网络问题,架构应使用 Kubernetes Service 资源。如需了解详情,请参阅 Kubernetes Service 的类型。 |
无头服务 |
初始化时,StatefulSet 会与匹配的无头服务配对。 |
请确保 Service 中的“metadata.name”与 StatefulSet 中的 |
对等发现 |
有状态应用只需最小数量的副本(仲裁),便可提供完整的可用性。 |
由于 Pod 可能会发生崩溃、被重新调度或被逐出,因此 StatefulSet 中的每个副本都应能够退出并重新联接仲裁。需要对等互连的应用应能够通过 Kubernetes 中的无头服务发现其他对等体。 |
基于就绪性探测和活跃性探测的健康检查 |
在适用的情况下,您的应用应正确配置就绪性、活跃性和启动探测。根据应用的要求,配置每个探测的超时设置。 |
对于就绪性探测,请遵循以下最佳做法来配置应用,在应用准备好处理流量时将其标记为准备就绪:
|
如需详细了解探测,请参阅配置活跃性、就绪性和启动探测。
使用 StatefulSet
如需了解如何在 GKE 集群中部署 StatefulSet 并与其进行交互,请参阅关于 StatefulSet 基础知识的 Kubernetes 文档。
后续步骤
- 了解如何部署有状态应用
- 了解如何使用滚动更新来更新 StatefulSet
- 详细了解如何在 GKE 中部署工作负载
- 在 Kubernetes 文档中详细了解 StatefulSet
- 学习有关如何升级运行有状态工作负载的集群的教程