工作负载
在Kubernetes中,工作负载是对一组Pod及其运行策略的抽象模型,其定义了业务应用的部署规范、生命周期管理策略和运行时的期望状态。作为业务运行的载体,工作负载通过控制器模式(Controller Pattern)持续观测并动态调整实际Pod实例,确保其始终符合用户声明的目标状态,同时提供版本管理、滚动更新、自动扩缩容等运维能力,使开发者能够以声明式的方式管理从无状态服务到有状态应用、从长期运行服务到批量计算任务等各类业务场景。
CCE集群提供基于Kubernetes原生类型的容器部署和管理能力,支持工作负载部署、配置、监控、扩容、升级、删除、服务发现及负载均衡等生命周期管理。
创建工作负载
针对不同业务场景,CCE集群支持创建不同类型的工作负载,具体如下:
- 无状态负载(Deployment):是一种不依赖本地存储或持久化状态的应用程序,每个Pod实例独立且等效,可以随时替换或扩展。Deployment适用于无需持久化数据的Web服务、API等场景,支持快速扩缩容和滚动更新。
- 有状态负载(StatefulSet):是一种需要持久化存储和保留状态的应用程序,每个Pod实例具有唯一标识符和与之关联的持久数据。StatefulSet适用于需要持久化存储和稳定网络标识的应用场景,如数据库和分布式存储系统等。
- 创建守护进程集(DaemonSet):用于确保集群中每个节点(或特定标签的节点)运行一个Pod,通常用于运行集群范围的日志收集、性能监控等服务。
- 普通任务(Job):用于执行一次性或短时运行的批处理任务,任务完成后Pod会自动终止。Job支持并行控制和重试机制,确保任务的可靠执行,典型应用于数据处理、报表生成等场景。
- 定时任务(CronJob):用于执行基于时间调度的周期性任务,按照设定的Cron表达式自动触发Job执行。其特点包括精准的定时调度能力和任务历史记录管理,典型应用于日常数据备份、定期报表生成等需要周期执行的批处理场景。
管理工作负载
工作负载创建后,CCE集群提供完整的运维管理能力,具体如下:
操作 |
描述 |
---|---|
日志 |
可查看工作负载的日志信息。 |
升级 |
可以通过更换镜像或镜像版本实现无状态工作负载、有状态工作负载的快速升级,业务无中断。 |
编辑YAML |
可通过在线YAML编辑窗对无状态工作负载、有状态工作负载、定时任务和容器组的YAML文件进行修改和下载。普通任务的YAML文件仅支持查看、复制和下载。
说明:
如果对已有的定时任务(CronJob)进行修改,修改之后运行的新Pod将使用新的配置,而已经运行的Pod将继续运行不会发生任何变化。 |
回退 |
无状态工作负载可以进行回退操作,仅无状态工作负载可用。 |
重新部署 |
工作负载可以进行重新部署操作,重新部署后将重启负载下的全部容器组Pod。 |
关闭/开启升级 |
无状态工作负载可以进行关闭/开启升级操作,仅无状态工作负载可用。 |
标签管理 |
标签是以key/value键值对的形式附加在工作负载上的。添加标签后,可通过标签对工作负载进行管理和选择。任务或定时任务无法使用标签管理功能。 |
删除 |
若工作负载无需再使用,您可以将工作负载删除。工作负载删除后,将无法恢复,请谨慎操作。 |
事件 |
查看具体实例的事件名称、事件类型、发生次数、Kubernetes事件、首次和最近发生的时间。 |
停止/启动 |
停止/启动一个定时任务,该功能仅定时任务可用。 |
更详细信息,请参见管理工作负载。
工作负载生命周期
工作负载存在以下几种状态,您可以根据通过工作负载状态了解业务运行状况。
状态 |
说明 |
---|---|
运行中 |
所有实例都处于运行中、或实例数为0时显示此状态。 |
未就绪 |
容器处于异常、负载下实例没有正常运行时显示此状态。 |
处理中 |
负载没有进入运行状态但也没有报错时显示此状态。 |
可用 |
当多实例无状态工作负载运行过程中部分实例异常,可用实例不为0,工作负载会处于可用状态。 |
执行完成 |
任务执行完成,仅普通任务存在该状态。 |
已停止 |
触发停止操作后,工作负载会处于停止状态,实例数变为0。v1.13之前的版本存在此状态。 |
删除中 |
触发删除操作后,工作负载会处于删除中状态。 |