概述
StatefulSet主要用于部署有状态服务的工作负载,相应pod具有稳定的标识符,并支持稳定持久的存储,有序的部署、删除和伸缩。
本模块提供了基于Kubernetes原生的StatefulSet的创建、配置、删除等生命周期的管理指南。
创建StatefulSet
您可以通过以下步骤在容器服务控制台通过镜像创建一个StatefulSet:
- 登录容器服务控制台。
- 在左侧导航栏中,选择集群,进入集群管理页面。
- 选择需要新建StatefulSet的集群,进入该集群操作页面。
- 选择工作负载 > StatefulSet,进入StatefulSet列表页。
- 单击页面左上角新建,根据实际需求完成配置,单击创建,即可新建StatefulSet。
以下为创建过程中的配置详情:
基本信息配置
- 名称:用户自定义StatefulSet的名称,不超过63个字符,只能包含小写字母、数字、和“-”,并且必须以小写字母开头,小写字母或数字结尾。
- 地域:选择您部署StatefulSet所在的地域。
- 部署集群:选择StatefulSet运行的集群。
- 命名空间:选择StatefulSet所在集群的命名空间。
- 描述:创建StatefulSet的相关信息,用户自定义填写。
部署配置
存储卷
目前支持使用主机路径、本地路径、金山云云硬盘、文件存储、已有PVC等存储类型。
备注:
使用本地硬盘时,若不指定源路径,则默认分配临时路径(对应k8s存储中EmpytDir)。
当使用云硬盘作为存储卷时,存储卷的名称为云硬盘的id,不可修改。
容器配置
设置运行的容器信息:
- 名称:容器的名称,不超过63个字符,只能包含小写字母、数字、和“-”,并且必须以小写字母开头,小写字母或数字结尾。
- 镜像:点击选择镜像,从镜像仓库中选择;或输入镜像仓库地址。
- 镜像版本:镜像的tag。
- 资源限制:设定容器所使用的CPU和内存资源的限制。
- 环境变量:在容器中添加环境变量,一般用于通过环境变量设置参数,目前仅支持手动添加。
- 实例数量:一个实例由相关的一个或多个容器构成,用户自定义实例数量。
镜像访问凭证
目前支持从私有镜像仓库拉取镜像时,为容器配置镜像访问凭证(对应yaml中的imagePullSecret)。
- 初始状态下提供默认选项ksyunregistrykey,可以匹配金山云镜像仓库中的私有镜像。
- 若您使用的镜像来自第三方私有镜像仓库,可以通过添加镜像访问凭证 > 使用新的访问凭证 > 设置访问凭证信息,设置新的访问凭证的名称,以及第三方仓库的域名、用户名、密码,即完成添加第三方私有镜像仓库访问凭证。
访问设置
- 取消开启关联Service:不提供任何从前端服务访问到容器的入口。
- 公网访问:通过金山云公网负载均衡暴露服务,可以直接被公网访问。
- VPC内网访问:通过金山云私网负载均衡暴露服务,可以被同一VPC下其他集群或者云服务器访问。
- 集群内访问:通过集群的内部IP暴露服务,服务只能在集群内部访问。
- 主机端口访问:通过任意一个节点的ip:nodeport,可以从集群外访问。
配置完成后,点击创建,返回StatefulSet列表页面,查询StatefulSet的状态。
StatefulSet基本操作
更新StatefulSet
点击容器控制台左侧导航栏,进入StatefulSet列表页面,点击更新,进入更新StatefulSet页面,用户可以根据业务需要更新StatefulSet的配置。
更新策略:
- 滚动更新:对实例进行逐个更新,这种方式可以让您不中断业务实现对服务的更新,您可自定义滚动更新的参数。
- Ondelete:默认的更新策略,用户手动删除旧pod后触发新pod的创建。
Pod管理策略:
- OrderedReady:StatefulSet的默认管理策略,即按照顺序启动或终止所有的Pod,启动或者终止其他Pod前,需要等待Pod进入Running/Ready/完全停止状态。
- Parallel:并行的启动或终止所有的Pod,启动或终止其他Pod前,无需等待Pod进入Running/Ready/完全停止状态。
调节实例数量
进入StatefulSet列表页面,点击调节实例数量,执行调节实例数量的操作。当前版本仅支持对StatefulSet数量的手动调节,点击+、-或者直接输入实例数量调节。
删除StatefulSet
进入StatefulSet列表页面,点击删除,执行删除StatefulSet的操作。