有状态副本集
有状态副本集是用于管理有状态应用的工作负载 API 对象,负责一组 Pod 的部署和扩缩,并保证这些 Pod 的顺序性和唯一性。
与部署类似,有状态副本集管理基于相同容器规范的 Pod。与部署不同的是,有状态副本集为其每个 Pod 维护一个粘性身份。这些 Pod 根据相同的规范而创建,但不能相互替换:每个 Pod 都有一个持久的标识符,无论 Pod 如何调度,该标识符均保持不变。
如果您想使用存储卷为工作负载提供持久化存储,可以使用有状态副本集作为解决方案的一部分。尽管有状态副本集中的单个 Pod 容易出现故障,但持久的 Pod 标识符可以更容易地将现有存储卷匹配到替换任意故障 Pod 的新 Pod。
对于需要满足以下一个或多个需求的应用程序来说,有状态副本集非常有用。
- 稳定的、唯一的网络标识符。
- 稳定的、持久的存储。
- 有序的、优雅的部署和扩缩。
- 有序的、自动的滚动更新。
有关更多信息,请参见 Kubernetes 官方文档。
准备工作
您需要创建一个企业空间、一个项目以及一个帐户 (project-regular
),务必邀请该帐户到项目中并赋予 operator
角色。有关更多信息,请参见创建企业空间、项目、帐户和角色。
创建有状态副本集
在 KubeSphere 中,创建有状态副本集时也会创建 Headless 服务。您可以在项目的应用负载下的服务中找到 Headless 服务。
步骤 1:打开仪表板
以 project-regular
身份登录控制台。转到项目的应用负载,选择工作负载,然后在有状态副本集选项卡下点击创建。
步骤 2:输入基本信息
为有状态副本集指定一个名称(例如 demo-stateful
),然后点击下一步继续。
步骤 3:设置镜像
-
设置镜像前,请点击容器组副本数量中的 或 来定义 Pod(即容器组)的副本数量,该参数显示在清单文件中的
.spec.replicas
字段。提示
您可以启用右上角的编辑模式,查看 YAML 格式的有状态副本集清单文件。KubeSphere 使您可以直接编辑清单文件创建有状态副本集,或者您可以按照下列步骤使用仪表板创建有状态副本集。 -
点击添加容器镜像。
-
输入镜像名称,该镜像可以来自公共 Docker Hub,也可以来自您指定的私有仓库。例如,在搜索栏输入
nginx
然后按回车键。备注
- 在搜索栏输入镜像名称后,请记得按键盘上的回车键。
- 如果想使用您的私有镜像仓库,您应该先通过配置中心下面的密钥创建镜像仓库密钥。
-
根据您的需求设置 CPU 和内存的资源请求和限制。有关更多信息,请参见容器镜像设置中关于资源请求和资源限制的内容。
-
点击使用默认端口以自动填充服务设置,或者您可以自定义协议、名称和容器端口。
-
从下拉菜单中选择镜像拉取策略。有关更多信息,请参见容器镜像设置中关于镜像拉取策略的内容。
-
对于其他设置(健康检查器、启动命令、环境变量、容器 Security Context 以及同步主机时区),您也可以在仪表板上配置它们。有关更多信息,请参见容器镜像设置中对这些属性的详细说明。操作完成后,点击右下角的 √ 继续。
-
在下拉菜单中选择更新策略。建议您选择滚动更新。有关更多信息,请参见更新策略。
-
选择部署模式。有关更多信息,请参见部署模式。
-
完成容器镜像设置后,点击下一步继续。
步骤 4:挂载存储卷
有状态副本集可以使用存储卷模板,但是您必须提前在存储管理中创建它。有关存储卷的更多信息,请访问存储卷。完成后,点击下一步继续。
步骤 5:配置高级设置
您可以在此部分中设置节点调度策略并添加元数据。完成操作后,点击创建完成创建有状态副本集的整个流程。
-
设置节点调度策略
您可以让 Pod 副本在指定节点上运行。该参数在
nodeSelector
字段中指定。 -
添加元数据
为资源进行额外的元数据设置,例如标签和注解。
查看有状态副本集详情
详情页面
-
有状态副本集创建后会显示在下方的列表中。您可以点击右边的 ,在弹出菜单中选择操作,修改您的有状态副本集。
- 编辑:查看并编辑基本信息。
- 编辑配置文件:查看、上传、下载或者更新 YAML 文件。
- 重新部署:重新部署该有状态副本集。
- 删除:删除该有状态副本集。
-
点击有状态副本集名称可以进入它的详情页面。
-
点击更多操作,显示您可以对该有状态副本集进行的操作。
- 版本回退:选择要回退的版本。
- 编辑服务:设置端口来暴露容器镜像和服务端口。
- 编辑配置模板:配置更新策略、容器和存储卷。
- 编辑配置文件:查看、上传、下载或者更新 YAML 文件。
- 重新部署:重新部署该有状态副本集。
- 删除:删除该有状态副本集并返回有状态副本集列表页面。
-
点击资源状态选项卡,查看该有状态副本集的端口和 Pod 信息。
-
副本运行状态:点击 或 来增加或减少 Pod 副本数量。
-
Pod 详情
- Pod 列表中显示了 Pod 详情(运行状态、节点、Pod IP 以及资源使用情况)。
- 您可以点击 Pod 条目查看容器信息。
- 点击容器日志图标查看容器的输出日志。
- 您可以点击 Pod 名称查看 Pod 详情页面。
-
版本记录
修改工作负载的资源模板后,会生成一个新的日志并重新调度 Pod 进行版本更新。默认保存 10 个最近的版本。您可以根据修改日志进行重新部署。
元数据
点击元数据选项卡以查看有状态副本集的标签和注解。
监控
-
点击监控选项卡以查看有状态副本集的 CPU 使用量、内存使用量、网络流出速率和网络流入速率。
-
点击右上角的下拉菜单以自定义时间范围和时间间隔。
-
点击右上角的 / 以开始或停止自动刷新数据。
-
点击右上角的 以手动刷新数据。
环境变量
点击环境变量选项卡查看有状态副本集的环境变量。
事件
点击事件查看有状态副本集的事件。
反馈
这篇文章对您有帮助吗?
感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。