You need to enable JavaScript to run this app.
容器服务

容器服务

复制全文
VCI 镜像缓存
使用 CRD 管理 VCI 镜像缓存
复制全文
使用 CRD 管理 VCI 镜像缓存

本文主要介绍通过 Kubernetes CustomResourceDefinition(CRD)的方式创建和管理 VCI 镜像缓存的方法。

说明

邀测·申请试用】:VCI 镜像缓存功能目前处于邀测阶段,如需使用,请提交申请。

前提条件

  • 已创建 VCI 业务相关集群。详细操作,请参见 创建集群
  • 已通过 kubectl 连接 VCI 集群。详细操作,请参见 连接集群
  • 已准备 VCI 实例所需的容器镜像。支持使用火山引擎镜像仓库(CR)中的镜像,也支持使用第三方镜像仓库中的镜像。上传镜像到 CR 的操作,请参见 推送和拉取镜像

基于 ImageCache 创建 VCI 镜像缓存

  1. 创建 VCI 镜像缓存对应的 ImageCache Custom Resource。示例 YAML 文件imagecache-test.yaml代码如下:
    apiVersion: vci.volcengine.com/v1beta1
    kind: ImageCache
    metadata:
      name: imagecache-test  # 指定 ImageCache Custom Resource 名称。须确保名称在集群内唯一。
    spec:
      images:                  # 制作镜像缓存所需要的容器镜像列表。
      - cr-cn-beijing.volces.com/vke/centos:v1
      - cr-cn-beijing.volces.com/vke/busybox:v1
      imagePullSecrets:        # 镜像仓库的访问凭证 Secret(保密字典)列表,不配置时会获取临时密钥。
      - default:secret1
      subnetIds:               # 镜像缓存实例所属的子网 ID 列表。
      - subnet-3rf6vwb******
      - subnet-7s89a78******
      securityGroupIds:        # 镜像缓存实例网络所在的安全组 ID 列表。
      - sg-2byy13cns******
      - sg-ds89xas98******
      retentionDays: 7         # 镜像缓存保留时间,单位:天。过期后镜像缓存会被清理。
      volume:
        imageCacheSize: 40   # 指定镜像缓存的大小,单位:GiB。
        prewarmZoneIds:  # 镜像缓存对应的弹性块存储(EBS)快照预热策略配置。指定需要预热的快照可用区。
        - cn-beijing-b
        - cn-beijing-c
        prewarmRetentionDays: 90 # 镜像缓存对应 EBS 快照的预热保留时长。单位:天,取值范围:1~180。
    
  2. 执行以下命令,创建 ImageCache。
    kubectl create -f imagecache-test.yaml
    

使用 ImageCache 关联存量 VCI 镜像缓存实例

  1. 创建 ImageCache Custom Resource,关联已有的 VCI 镜像缓存实例。示例 YAML 文件imagecache-exist.yaml代码如下:
    apiVersion: vci.volcengine.com/v1beta1
    kind: ImageCache
    metadata:
      name: imagecache-exist # 指定 ImageCache Custom Resource 名称。须确保名称在集群内唯一。
    spec: 
      appointedImageCacheId: imc-****** # 存量镜像缓存实例 ID。
      securityGroupIds: # 镜像缓存网络所在安全组 ID 列表。
      - sg-2byy13cns******
      subnetIds:        # 镜像缓存实例所属的子网 ID 列表。
      - subnet-3rf6vwb******
      - subnet-7s89a78******
    
  2. 执行以下命令,创建 ImageCache。
    kubectl create -f imagecache-exist.yaml
    

查询 ImageCache 的状态和最新信息

VCI 镜像缓存创建后,ImageCache Controller 会获取镜像缓存的最新信息,并同步到 ImageCache 的描述中,您可以通过get ImageCache命令来获取镜像缓存的最新状态和信息。

说明

  • 镜像缓存创建完成后的状态,可以回写到对应 ImageCache Custom Resource 的status字段中。
  • 如果通过 openAPI 的 UpdateImageCache 接口更新镜像缓存信息,则对应 ImageCache Custom Resource 的信息也会被刷新。
  • 当镜像缓存被删除或者清理后,更新 Custom Resource 对象的状态,而不是直接删除。

ImageCache Custom Resource 内容如下所示:

apiVersion: vci.volcengine.com/v1beta1
kind: ImageCache
metadata:
  name: imagecache-test  # ImageCache Custom Resource 名称。
spec:
  images:                  # 制作镜像缓存所需要的容器镜像列表。
  - cr-cn-beijing.volces.com/vke/centos:v1
  - cr-cn-beijing.volces.com/vke/busybox:v1
  imagePullSecrets:        # 镜像仓库的访问凭证 Secret 列表。
  - default:secret1
  subnetIds:               # 镜像缓存实例所属的子网 ID 列表。
  - subnet-3rf6vwb******
  - subnet-7s89a78******
  securityGroupIds:        # 镜像缓存实例网络所在的安全组 ID 列表。
  - sg-2byy13cns******
  - sg-ds89xas98******
  retentionDays: 7         # 镜像缓存保留时间,单位:天。过期后镜像缓存会被清理。
  volume:
    imageCacheSize: 40   # 镜像缓存的大小,单位:GiB。
    prewarmZoneIds:  # 镜像缓存对应 EBS 快照预热策略配置,即预热快照的可用区。
    - cn-beijing-b
    - cn-beijing-c
    prewarmRetentionDays: 90 # 镜像缓存对应 EBS 快照的预热保留时长。单位:天。
status:
  images:
    previous: # .spec 上一次配置的 images 信息,用于和当前 .spec 对比。
    - cr-cn-beijing.volces.com/vke/centos:v1
    - cr-cn-beijing.volces.com/vke/busybox:v1
    latest:  # 根据 EventRuleRecords 同步的当前最新镜像信息。
    - cr-cn-shanghai.volces.com/vke/centos:v2
    - cr-cn-shanghai.volces.com/busybox:v2
  imageCacheName: imagecache-test-******
  imageCacheId: *********  # 镜像缓存 ID。
  creationTime: 2024-04-16T20:33:54Z    # 镜像缓存的创建时间。
  updateTime: 2024-04-16T20:33:54Z      # 镜像缓存最近一次更新的时间。
  expireDateTime: 2024-07-16T20:33:54Z  # 镜像缓存到期时间。
  lastMatchedTime: 2024-04-16T21:23:54Z # 最近一次匹配镜像缓存的时间。
  phase: Ready                          # 镜像缓存状态信息。
  conditions:
  - lastTransitionTime: "2024-04-16T20:33:54Z"
    message: instance imc-3vknvu66783****** has been ready
    reason: ImageCacheHasBeenReady
    status: "True"
    type: ImageCacheReady
  - lastTransitionTime: "2024-04-16T20:33:54Z"
    message: "instance {imc-******} is in progress"
    reason: CreateImageCacheRequestSuccess
    status: "True"
    type: CreationInProgress

通过 ImageCache 删除 VCI 镜像缓存

当您通过delete命令删除 ImageCache Custom Resource 时,ImageCache Controller 将会联动删除对应的 VCI 镜像缓存。

下方命令以删除名为imagecache-test的 ImageCache Custom Resource 为例,执行命令后,imagecache-test对应的 VCI 镜像缓存会被删除。

kubectl delete imc imagecache-test

通过 ImageCache 更新 VCI 镜像缓存

当您更新 ImageCache Custom Resource 时,ImageCache Controller 将会联动更新对应的 VCI 镜像缓存。

说明

  • 当镜像缓存的状态为Ready时,必须修改images字段(可以同时修改其他字段),才会触发镜像缓存更新。
  • 当镜像缓存的状态为Failed时,修改下方 YAML 中可更新的字段,均可以触发镜像缓存更新。

支持更新的字段说明,请见如下 YAML 文件中的注释(除了提示 不支持更新 的注释以外,其余带有注释的参数,均支持更新)。

apiVersion: vci.volcengine.com/v1beta1
kind: ImageCache
metadata:
  name: imagecache-test  # ImageCache Custom Resource 名称。不支持更新。
spec:
  images:                  # 制作镜像缓存所需要的容器镜像列表。
  - cr-cn-beijing.volces.com/vke/centos:v1
  - cr-cn-beijing.volces.com/vke/busybox:v1
  imagePullSecrets:        # 镜像仓库的访问凭证 Secret 列表,不配置时会获取临时密钥。
  - default:secret1
  subnetIds:               # 镜像缓存实例所属的子网 ID 列表。
  - subnet-3rf6vwbgkg****
  - subnet-7s89a78xaa****
  securityGroupIds:        # 镜像缓存实例网络所在的安全组 ID 列表。
  - sg-2byy13cnsczy****
  - sg-ds89xas98sa9****
  retentionDays: 7         # 镜像缓存保留时间,单位:天。不支持更新。
  volume:
    imageCacheSize: 40   # 镜像缓存的大小,单位:GiB。
    prewarmZoneIds:  # 镜像缓存对应 EBS 快照预热策略配置。指定需要预热的快照可用区。
    - cn-beijing-b
    - cn-beijing-c
    prewarmRetentionDays: 90 # 镜像缓存对应 EBS 快照的预热保留时长。单位:天,取值范围:1~180。

基于事件通知自动更新 VCI 镜像缓存

在创建 VCI 镜像缓存对应的 ImageCache Custom Resource 时,支持配置镜像仓库事件通知规则,实现基于事件通知自动更新 VCI 镜像缓存。

  1. 创建 VCI 镜像缓存对应的 ImageCache Custom Resource,并配置镜像仓库事件通知规则。示例 YAML 文件imagecache-test.yaml代码如下:
    apiVersion: vci.volcengine.com/v1beta1
    kind: ImageCache
    metadata:
      name: imagecache-test  # 指定 ImageCache Custom Resource 名称。须确保名称在集群内唯一。
    spec:
      eventRule: # 创建镜像仓库事件通知规则。
        strategy: update  # 命中策略,取值:update(更新),new(新增),表示命中 eventRule 后更新/新建镜像缓存。
        registry: "helm-cr"  # 镜像仓库实例名称,仅支持标准版。
        namespaces:  # 镜像仓库实例内的命名空间列表。
        - vke
        images:  # 命名空间下的镜像列表。
        - centos 
        - busybox
        tag: ".*"  # 规则作用范围,支持正则表达式。
        enabled: true  # 是否启用 eventRule,取值:true(启用)、false(不启用)。   
      images:  # 制作镜像缓存所需要的容器镜像列表。
      - cr-cn-beijing.volces.com/vke/centos:v1
      - cr-cn-beijing.volces.com/vke/busybox:v1
      imagePullSecrets:  # 镜像仓库的访问凭证 Secret 列表,不配置时会获取临时密钥。
      - default:secret1
      subnetIds:  # 镜像缓存实例所属的子网 ID 列表。
      - subnet-3rf6vwb******
      - subnet-7s89a78******
      securityGroupIds:  # 镜像缓存实例网络所在的安全组 ID 列表。
      - sg-2byy13cns******
      - sg-ds89xas98******
      retentionDays: 7  # 镜像缓存保留时间,单位:天。过期后镜像缓存会被清理。
      volume:
        imageCacheSize: 40  # 指定镜像缓存的大小,单位:GiB。
        prewarmZoneIds:  # 镜像缓存对应 EBS 快照预热策略配置。指定需要预热的快照可用区。
        - cn-beijing-b
        - cn-beijing-c
        prewarmRetentionDays: 90  # 镜像缓存对应 EBS 快照的预热保留时长。单位:天,取值范围:1~180。
    
  2. 执行以下命令,创建 ImageCache。
    kubectl create -f imagecache-test.yaml
    
    创建完成包含镜像仓库事件通知规则的 ImageCache Custom Resource 后,查询该 ImageCache 时,YAML 文件中的status字段说明如下所示。查询方法,请参见本文上方 查询 ImageCache 的状态和最新信息
    status:
      notifications:  # 记录 EventRuleRecords 消息。
      - image: "cr-cn-shanghai.volces.com/vke/centos:v3"
        receviedTimestamp: 2024-05-27T10:33:30Z
        processedTimestamp: 2024-05-27T10:34:30Z
        id: "xx-4"
      - image: "cr-cn-shanghai.volces.com/vke/busybox:v3"
        receviedTimestamp: 2024-05-27T10:33:30Z
        processedTimestamp: 2024-05-27T10:34:30Z
        id: "xx-1"
      eventRuleStatus:
        ruleName: ******  #  镜像仓库事件通知规则名称。
        ruleId: "******"  # 事件通知规则的 ID。
        updateTime: 2024-05-27T09:23:56Z  # 事件通知规则最近一次更新的时间。
        eventRuleHash: "******"
      images:
        previous:  # .spec 上一次配置的 images 信息,用于和当前 .spec 对比。
        - cr-cn-shanghai.volces.com/vke/centos:v1
        - cr-cn-guilin-boe.cr.volces.com/busybox:v1
        latest:  # 根据 EventRuleRecords 同步的当前最新镜像信息。
        - cr-cn-shanghai.volces.com/vke/centos:v2
        - cr-cn-guilin-boe.cr.volces.com/busybox:v2
      imageCacheName: *********  # 镜像缓存实例名称。
      imageCacheId: *********  # 镜像缓存 ID。
      creationTime: 2024-05-27T10:33:30Z     # 镜像缓存的创建时间。
      updateTime: 2024-05-27T10:33:30Z       # 镜像缓存最近一次更新的时间。
      expireDateTime: 2024-05-27T10:33:30Z   # 镜像缓存到期时间。
      lastMatchedTime: 2024-05-27T09:33:30Z  # 最近一次匹配镜像缓存的时间。
      phase: Failed  # 镜像缓存状态信息。
      conditions:
      - lastTransitionTime: "2024-04-16T20:33:54Z"
        message: instance imc-3vknvu667****** has been ready
        reason: ImageCacheHasBeenReady
        status: "True"
        type: ImageCacheReady
      - lastTransitionTime: "2024-04-16T20:33:54Z"
        message: "instance {imc-******} is in progress"
        reason: CreateImageCacheRequestSuccess
        status: "True"
        type: CreationInProgress
    
最近更新时间:2024.07.11 14:28:15
这个页面对您有帮助吗?
有用
有用
无用
无用