有状态副本集

有状态副本集是用于管理有状态应用的工作负载 API 对象,负责一组容器组的部署和扩缩,并保证这些容器组的顺序性和唯一性。

与部署类似,有状态副本集管理基于相同容器规范的容器组。与部署不同的是,有状态副本集为其每个容器组维护一个粘性身份。这些容器组根据相同的规范而创建,但不能相互替换:每个容器组都有一个持久的标识符,无论容器组如何调度,该标识符均保持不变。

如果您想使用存储卷为工作负载提供持久化存储,可以使用有状态副本集作为解决方案的一部分。尽管有状态副本集中的单个容器组容易出现故障,但持久的容器组标识符可以更容易地将现有存储卷匹配到替换任意故障容器组的新容器组。

对于需要满足以下一个或多个需求的应用程序来说,有状态副本集非常有用。

  • 稳定的、唯一的网络标识符。
  • 稳定的、持久的存储。
  • 有序的、优雅的部署和扩缩。
  • 有序的、自动的滚动更新。

有关更多信息,请参见 Kubernetes 官方文档

准备工作

您需要创建一个企业空间、一个项目以及一个用户 (project-regular),务必邀请该用户到项目中并赋予 operator 角色。有关更多信息,请参见创建企业空间、项目、用户和角色

创建有状态副本集

在 KubeSphere 中,创建有状态副本集时也会创建 Headless 服务。您可以在项目的应用负载下的服务中找到 Headless 服务。

步骤 1:打开仪表板

project-regular 身份登录控制台。转到项目的应用负载,选择工作负载,然后在有状态副本集选项卡下点击创建

步骤 2:输入基本信息

为有状态副本集指定一个名称(例如 demo-stateful),然后点击下一步继续。

步骤 3:设置容器组

  1. 设置镜像前,请点击容器组副本数量中的 来定义容器组的副本数量,该参数显示在清单文件中的 .spec.replicas 字段。

    提示

    您可以启用右上角的编辑 YAML,查看 YAML 格式的有状态副本集清单文件。KubeSphere 使您可以直接编辑清单文件创建有状态副本集,或者您可以按照下列步骤使用仪表板创建有状态副本集。
  2. 点击添加容器

  3. 输入镜像名称,该镜像可以来自公共 Docker Hub,也可以来自您指定的私有仓库。例如,在搜索栏输入 nginx 然后按回车键

    备注

    • 在搜索栏输入镜像名称后,请记得按键盘上的回车键
    • 如果想使用您的私有镜像仓库,您应该先通过配置下面的保密字典创建镜像仓库保密字典
  4. 根据您的需求设置 CPU 和内存的资源请求和限制。有关更多信息,请参见容器镜像设置中关于资源请求和资源限制的内容

  5. 点击使用默认端口以自动填充端口设置,或者您可以自定义协议名称容器端口

  6. 从下拉列表中选择镜像拉取策略。有关更多信息,请参见容器镜像设置中关于镜像拉取策略的内容

  7. 对于其他设置(健康检查启动命令环境变量容器安全上下文 以及同步主机时区),您也可以在仪表板上配置它们。有关更多信息,请参见容器组设置中对这些属性的详细说明。操作完成后,点击右下角的 继续。

  8. 在下拉菜单中选择更新策略。建议您选择滚动更新。有关更多信息,请参见更新策略

  9. 选择容器组调度规则。有关更多信息,请参见容器组调度规则

  10. 完成容器组设置后,点击下一步继续。

步骤 4:挂载存储卷

有状态副本集可以使用存储卷模板,但是您必须提前在存储管理中创建它。有关存储卷的更多信息,请访问存储卷。完成后,点击下一步继续。

步骤 5:配置高级设置

您可以在此部分中设置节点调度策略并添加元数据。完成操作后,点击创建完成创建有状态副本集的整个流程。

  • 选择节点

    分配容器组副本在指定节点上运行。该参数在 nodeSelector 字段中指定。

  • 添加元数据

    为资源进行额外的元数据设置,例如标签注解

查看有状态副本集详情

详情页面

  1. 有状态副本集创建后会显示列表中。您可以点击右边的 ,在弹出菜单中选择操作,修改您的有状态副本集。

    • 编辑信息:查看并编辑基本信息。
    • 编辑 YAML:查看、上传、下载或者更新 YAML 文件。
    • 重新创建:重新创建该有状态副本集。
    • 删除:删除该有状态副本集。
  2. 点击有状态副本集名称可以进入它的详情页面。

  3. 点击更多操作,显示您可以对该有状态副本集进行的操作。

    • 回退:选择要回退的版本。
    • 编辑服务:设置端口来暴露容器镜像和服务端口。
    • 编辑设置:配置更新策略、容器和存储卷。
    • 编辑 YAML:查看、上传、下载或者更新 YAML 文件。
    • 重新创建:重新创建该有状态副本集。
    • 删除:删除该有状态副本集并返回有状态副本集列表页面。
  4. 点击资源状态选项卡,查看该有状态副本集的端口和容器组信息。

    • 副本运行状态:点击 来增加或减少容器组副本数量。

    • 容器组

      • 容器组列表中显示了容器组详情(运行状态、节点、容器组IP 以及资源使用情况)。
      • 您可以点击容器组条目查看容器信息。
      • 点击容器日志图标查看容器的输出日志。
      • 您可以点击容器组名称查看容器组详情页面。

版本记录

修改工作负载的资源模板后,会生成一个新的日志并重新调度容器组进行版本更新。默认保存 10 个最近的版本。您可以根据修改日志进行重新创建。

元数据

点击元数据选项卡以查看有状态副本集的标签和注解。

监控

  1. 点击监控选项卡以查看有状态副本集的 CPU 使用量、内存使用量、网络流出速率和网络流入速率。

  2. 点击右上角的下拉菜单以自定义时间范围和采样间隔。

  3. 点击右上角的 statefulsets_autorefresh_start/ 以开始或停止自动刷新数据。

  4. 点击右上角的 以手动刷新数据。

环境变量

点击环境变量选项卡查看有状态副本集的环境变量。

事件

点击事件查看有状态副本集的事件。

通过邮件接收 KubeSphere 最新的技术博客与产品更新的通知


感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。