【OpenKruise】镜像预热
【摘要】 1. 背景OpenKruise 是一个基于 Kubernetes 的扩展项目,旨在增强和扩展 Kubernetes 的原生能力,以更好地支持大规模应用的管理和运维。它通过提供一系列自定义 控制器 和自定义资源(CRD),帮助用户在 Kubernetes 集群中更加灵活、高效地管理容器化应用。 2. 简介OpenKruise实现镜像预热,通过运行架构中的kruise-manager与krui...
1. 背景
OpenKruise 是一个基于 Kubernetes 的扩展项目,旨在增强和扩展 Kubernetes 的原生能力,以更好地支持大规模应用的管理和运维。它通过提供一系列自定义 控制器 和自定义资源(CRD),帮助用户在 Kubernetes 集群中更加灵活、高效地管理容器化应用。
2. 简介
OpenKruise实现镜像预热,通过运行架构中的kruise-manager与kruise-daemon组件实现。kruise-manager为集群中心,负责管理多个控制器和webhook,kruise-daemon部署于集群节点,通过与容器运行时交互执行镜像拉取任务。NodeImage自定义资源定义节点需要预热的镜像,kruise-daemon据此执行镜像拉取。
为适应大规模场景,OpenKruise引入ImagePullJob自定义资源,定义镜像在集群特定范围内的批量预热策略。镜像预热应用于集群基础镜像预热、sidecar镜像预热及特殊业务镜像资源池预热。

3. 前提条件
1.已创建cce集群
2.集群已安装openkruise
4. 实操
创建cce集群

创建ImagePullJob
apiVersion: apps.kruise.io/v1alpha1
kind: ImagePullJob
metadata:
name: job-nginx
spec:
image: nginx:1.9.1 # [required] 完整的镜像名 name:tag
parallelism: 10 # [optional] 最大并发拉取的节点梳理, 默认为 1
selector: # [optional] 指定节点的 名字列表 或 标签选择器 (只能设置其中一种),不设置表示全部节点
names:
- node-1
- node-2
matchLabels:
node-type: xxx
completionPolicy:
type: Always # [optional] 默认为 Always
activeDeadlineSeconds: 1200 # [optional] 无默认值, 只对 Alway 类型生效
ttlSecondsAfterFinished: 300 # [optional] 无默认值, 只对 Alway 类型生效
pullPolicy: # [optional] 每个节点上拉镜像的侧脸,默认 backoffLimit=3, timeoutSeconds=600
backoffLimit: 3
timeoutSeconds: 300
ImagePullJob 有两种 completionPolicy 类型:
- Always 表示这个 job 是一次性预热,不管成功、失败都会结束
1.activeDeadlineSeconds:整个 job 的 deadline 结束时间
2.ttlSecondsAfterFinished:结束后超过这个时间,自动清理删除 job - Never 表示这个 job 是长期运行、不会结束,并且会每天都会在匹配的节点上重新预热一次指定的镜像
5. 验证
查看 ImagePullJob 执行状态:
kubectl get imagepulljob -n kruise-system
关键状态: succeeded(成功节点数)、failed(失败节点数)、active(运行中节点数)
查看节点镜像预热状态
kubectl get nodeimage kruise-system -o yaml
查看 spec.images 确认目标镜像,status 查看拉取结果
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)