You need to enable JavaScript to run this app.
导航

镜像预热

最近更新时间2024.03.07 15:25:22

首次发布时间2024.03.07 15:25:22

镜像预热用于将镜像提前拉取到边缘节点,以便部署应用时可以快速拉取镜像。当镜像更新后,如果您希望进行镜像预热,需要编写预热任务的 YAML 文件并提交,以发起一个镜像预热任务。本文介绍了如何进行镜像预热。

前提条件

为确保预热镜像成功,需要满足以下条件:

  • 镜像仓库已开启公网访问权限。
  • 当镜像仓库为私有镜像仓库时,您需要配置访问凭证。具体操作步骤请参见为服务账号添加 ImagePullSecrets
  • 已安装镜像预热组件 phosphor。安装组件的操作步骤请参见安装组件

操作步骤

镜像预热功能支持用户对单个镜像进行预热,也支持通过列表的方式指定多个镜像批量预热。您可以根据实际需求选择相应的预热方式。

预热单镜像

apiVersion: apps.phosphor.io/v1alpha1
kind: ImagePullJob
metadata:
  name: job1-with-always   
  namespace: test-namespace # 可以指定,也可以使用默认的default,主要与pullSecrets的配置相关
spec:
  image: nginx:1.9.1        # [required] 完整的镜像名 name:tag
  serviceAccountName: test  # [optional]指定用于pullSecrets获取的sevice account,如果通过免密形式提供密钥,可以不配置
# pullSecrets:              # [optional]如果拉取私有镜像,可配置PullSecret,优先级高于service account
# - secret-name1
# - secret-name2
  parallelism: 5            # [optional] 最大并发拉取的节点数量, 默认为 1
  selector:                 # [optional] 指定节点的 名字列表 或 标签选择器 (只能设置其中一种)
    names:                  # [optional] 通过名字列表匹配节点
    - node-1
    - node-2
    matchLabels:            # [optional] 通过名Label匹配节点
      node-type: xxx
# podSelector:              # [optional] 通过 podSelector 匹配Pod,在这些 Pod 所在节点上拉取镜像, 与 selector 不能同时设置.
#   matchLabels:
#     pod-label: xxx
#   matchExpressions:
#   - key: pod-label
#      operator: In
#        values:
#        - xxx
  completionPolicy:               # 任务执行完成策略,默认采用Always策略
    type: Always                  # [optional] 删除执行完成后删除任务,Never表示不删除任务
    activeDeadlineSeconds: 3600   # [optional] 任务开始执行到结束的时间, 只对 Always 类型生效,为空表示不限制
    ttlSecondsAfterFinished: 300  # [optional] 拉取完成(成功或失败)超过 300s 后,将任务中清除, 只对 Always类型生效
  pullPolicy:                     # [optional] 默认 backoffLimit=3, timeoutSeconds=600
    backoffLimit: 3               # [optional] 镜像拉取重试次数,默认3次  
    timeoutSeconds: 600           # [optional] 镜像拉取的超时时间,默认600秒  

批量预热多个镜像

apiVersion: apps.phosphor.io/v1alpha1
kind: ImageListPullJob
metadata:
  name: golang
spec:
  images: 
  - nginx:1.10.3   # [required] 完整的镜像名 name:tag
  - nginx:1.25.3
# ...
# 其余配置与ImagePullJob保持相同

上述YAML中涉及参数解释如下:

配置项
是否必填
说明
metadata
spec