StatefulSets
目录
理解 StatefulSets
请参考 Kubernetes 官方文档:StatefulSets
StatefulSet 是 Kubernetes 的一种工作负载 API 对象,专为管理有状态应用设计,提供以下功能:
- 稳定的网络身份:DNS 主机名格式为
<statefulset-name>-<ordinal>.<service-name>.ns.svc.cluster.local。 - 稳定的持久存储:通过
volumeClaimTemplates实现。 - 有序部署/扩缩容:Pod 按顺序创建/删除:Pod-0 → Pod-1 → Pod-N。
- 有序滚动更新:Pod 按逆序号更新:Pod-N → Pod-0。
在分布式系统中,可以部署多个 StatefulSets 作为独立组件,提供专门的有状态服务(例如 Kafka brokers、MongoDB shards)。
创建 StatefulSets
使用 CLI 创建 StatefulSet
前提条件
- 确保已配置并连接到集群的
kubectl。
YAML 文件示例
通过 YAML 创建 StatefulSet
使用 Web 控制台创建 StatefulSet
前提条件
获取镜像地址。镜像来源可以是平台管理员通过工具链集成的镜像仓库,也可以是第三方平台的镜像仓库。
-
对于前者,管理员通常会将镜像仓库分配给您的项目,您可以使用其中的镜像。如果找不到所需的镜像仓库,请联系管理员分配。
-
对于第三方平台的镜像仓库,请确保当前集群可以直接拉取镜像。
操作步骤 - 配置基础信息
-
在 容器平台,左侧导航栏进入 工作负载 > StatefulSets。
-
点击 创建 StatefulSet。
-
选择或输入镜像,点击 确认。
注意:使用 Web 控制台集成的镜像仓库时,可以通过 已集成 过滤镜像。集成项目名称 例如 images (docker-registry-projectname),其中包含该 Web 控制台中的项目名 projectname 和镜像仓库中的项目名 containers。
在 基础信息 区域,配置 StatefulSet 工作负载的声明式参数:
操作步骤 - 配置 Pod
Pod 部分,请参考 Deployment - 配置 Pod
操作步骤 - 配置容器
Containers 部分,请参考 Deployment - 配置容器
操作步骤 - 创建
点击 创建。
健康检查
管理 StatefulSets
使用 CLI 管理 StatefulSet
查看 StatefulSet
您可以查看 StatefulSet 以获取应用信息。
-
查看 StatefulSet 是否已创建。
-
获取 StatefulSet 详细信息。
扩缩容 StatefulSet
-
修改已有 StatefulSet 的副本数:
-
示例:
更新 StatefulSet(滚动更新)
当修改 StatefulSet 的 Pod 模板(例如更改容器镜像)时,Kubernetes 默认执行滚动更新(前提是 updateStrategy 设置为 RollingUpdate,且这是默认值)。
-
首先编辑 YAML 文件(如 example-statefulset.yaml)进行所需更改,然后应用:
-
然后可以监控滚动更新进度:
删除 StatefulSet
删除 StatefulSet 及其关联的 Pods:
默认情况下,删除 StatefulSet 不会删除其关联的 PersistentVolumeClaims (PVCs) 或 PersistentVolumes (PVs),以防止数据丢失。若需同时删除 PVC,请显式执行:
另外,如果您的 volumeClaimTemplates 使用的 StorageClass 的 reclaimPolicy 为 Delete,则在删除 PVC 时,PV 及其底层存储也会自动删除。
使用 Web 控制台管理 StatefulSet
查看 StatefulSet
- 在 容器平台,导航至 工作负载 > StatefulSets。
- 找到您要查看的 StatefulSet。
- 点击 StatefulSet 名称查看 详情、拓扑、日志、事件、监控 等信息。
更新 StatefulSet
- 在 容器平台,导航至 工作负载 > StatefulSets。
- 找到您要更新的 StatefulSet。
- 在 操作 下拉菜单中选择 更新,进入编辑 StatefulSet 页面,可更新
Replicas、image、updateStrategy等参数。
删除 StatefulSet
- 在 容器平台,导航至 工作负载 > StatefulSets。
- 找到您要删除的 StatefulSet。
- 在 操作 下拉菜单中点击 删除 按钮并确认。