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
前提条件
获取镜像地址。镜像来源可以是平台管理员通过工具链集成的镜像仓库,也可以是第三方平台的镜像仓库。
-
对于前者,管理员通常会将镜像仓库分配给您的项目,您可以使用其中的镜像。如果找不到所需的镜像仓库,请联系管理员进行分配。
-
对于第三方平台的镜像仓库,请确保当前集群能够直接拉取镜像。
操作步骤 - 配置基本信息
-
在 Container Platform 中,左侧导航栏进入 Workloads > StatefulSets。
-
点击 Create StatefulSet。
-
选择或输入镜像,点击 Confirm。
注意:使用 Web 控制台集成的镜像仓库时,可以通过 Already Integrated 过滤镜像。集成项目名称 例如 images (docker-registry-projectname),其中 projectname 是该 Web 控制台中的项目名,也是镜像仓库中的项目名。
在 Basic Info 部分,配置 StatefulSet 工作负载的声明式参数:
操作步骤 - 配置 Pod
Pod 部分,请参考 Deployment - Configure Pod
操作步骤 - 配置容器
Containers 部分,请参考 Deployment - Configure Containers
操作步骤 - 创建
点击 Create。
健康检查
管理 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
- 在 Container Platform 中,进入 Workloads > StatefulSets。
- 找到要查看的 StatefulSet。
- 点击 StatefulSet 名称,查看 详情、拓扑、日志、事件、监控 等信息。
更新 StatefulSet
- 在 Container Platform 中,进入 Workloads > StatefulSets。
- 找到要更新的 StatefulSet。
- 在 Actions 下拉菜单中选择 Update,进入编辑 StatefulSet 页面,可更新
Replicas、image、updateStrategy等参数。
删除 StatefulSet
- 在 Container Platform 中,进入 Workloads > StatefulSets。
- 找到要删除的 StatefulSet。
- 在 Actions 下拉菜单中,点击操作列的 Delete 按钮并确认。