本文主要介绍通过 Kubernetes CustomResourceDefinition(CRD)的方式创建和管理 VCI 镜像缓存的方法。
说明
【邀测·申请试用】:VCI 镜像缓存功能目前处于邀测阶段,如需使用,请提交申请。
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。
kubectl create -f imagecache-test.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******
kubectl create -f imagecache-exist.yaml
VCI 镜像缓存创建后,ImageCache Controller 会获取镜像缓存的最新信息,并同步到 ImageCache 的描述中,您可以通过get ImageCache
命令来获取镜像缓存的最新状态和信息。
说明
status
字段中。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
当您通过delete
命令删除 ImageCache Custom Resource 时,ImageCache Controller 将会联动删除对应的 VCI 镜像缓存。
下方命令以删除名为imagecache-test
的 ImageCache Custom Resource 为例,执行命令后,imagecache-test
对应的 VCI 镜像缓存会被删除。
kubectl delete imc imagecache-test
当您更新 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 镜像缓存对应的 ImageCache Custom Resource 时,支持配置镜像仓库事件通知规则,实现基于事件通知自动更新 VCI 镜像缓存。
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。
创建完成包含镜像仓库事件通知规则的 ImageCache Custom Resource 后,查询该 ImageCache 时,YAML 文件中的kubectl create -f imagecache-test.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