You need to enable JavaScript to run this app.
导航
使用自动镜像缓存创建 VCI 实例
最近更新时间:2024.07.01 15:08:34首次发布时间:2023.06.05 16:02:07

在创建容器(Container)过程中,镜像拉取往往耗时较长,目前弹性容器实例支持使用自动镜像缓存方案,加速 VCI 实例的创建过程。

说明

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

使用限制

使用自动镜像缓存方案加速创建 VCI 实例有如下使用限制。

限制项限制说明
镜像缓存盘(云盘)默认仅提供 40 GiB 的存储空间,若识别到目标容器镜像所需要的缓存容量空间超过 40 GiB 时,需要单独指定所需的存储空间,否则镜像缓存可能会创建失败。

镜像缓存快照

镜像缓存有效期为 15 天,过期后再次使用镜像创建云盘的耗时会变长,且可能导致云盘创建失败。

说明

  • 建议预先基于该镜像缓存手动创建云盘并触发云盘对快照数据进行预热缓存。
  • 预热缓存需在使用镜像缓存的目标地域和可用区中进行。

镜像缓存能力限制

  • 自动镜像缓存功能默认不开启,需要通过特定的 Annotation(注解)进行使能。
  • 使用自动创建的镜像缓存创建 VCI 实例时,VCI 实例的系统盘容量必须大于等于所匹配/使用的镜像缓存大小。
  • 自动镜像缓存能力暂不提供 API。
  • 使用自动镜像缓存时,需要提前通过创建少量的 Pod 来触发和创建自动镜像缓存。待自动创建的镜像缓存状态为 [Ready.Ok] 后,即可使用其大批量创建业务 Pod。
  • 自动创建的镜像缓存,若一直未被 Pod 使用,则最长保留 15 天,过期后会自动清理。
  • 除了正在删除中的镜像缓存(状态为 [deleting,*]),每个火山引擎账号(含子用户)最多支持存在 20 个镜像缓存,超过后无法创建新的镜像缓存。您可以删除无用的镜像缓存,或在 配额中心 申请提升配额。详细操作,请参见 配额查看和申请

使用方法

步骤一:准备容器镜像

准备创建 VCI 实例时使用的容器镜像。支持使用火山引擎镜像仓库(CR)中的镜像,也支持使用第三方镜像仓库中的镜像。

本文以使用 CR 中的镜像为例。上传镜像到 CR 的操作,请参见 推送和拉取镜像

步骤二:(可选)自动缓存及预热镜像

创建 VCI 实例前请确认需要使用的容器镜像是否为新的镜像。若为新镜像,则需要通过添加提前完成镜像的缓存和预热。

说明

新的镜像是指镜像名称、镜像版本、镜像层数据等与已有的镜像不一致的容器镜像。

建议先创建少量的 Pod 实例来触发和完成自动镜像缓存的创建。下文以创建包含 1 个 Pod 实例,且以弹性容器实例方式部署的无状态负载(VCI Deployment)为例。详细的操作说明,请参见 指定容器 vCPU 和内存创建实例

控制台方式创建

  1. 创建 VPC-CNI 容器网络模型的集群
  2. 创建无状态负载 ,其中部分参数,按如下说明配置。
    a. 配置 基本信息 时:算力类型 选择 弹性容器实例 VCI
    alt
    b. 配置 容器配置 时:选择已准备好的新镜像。
    alt
    c. 配置 高级配置 时:实例注解 处,添加 Annotation:vci.vke.volcengine.com/enable-auto-create-imc:"true"
    alt

    注意

    VCI 默认仅提供 40 GiB 的存储空间用于镜像缓存,若识别到目标容器镜像所需要的缓存容量空间较大时,需要在本步骤添加额外的 Annotation:vci.vke.volcengine.com/auto-imc-disk-size:"具体容量大小"(单位为 GiB)来指定所需的镜像缓存盘大小,例如需要 80 GiB 容量,则 Annotation 为vci.vke.volcengine.com/auto-imc-disk-size:"80"

  3. 单击 确定,创建 VCI Deployment。

Kubernetes 方式创建

  1. 创建 VCI Deployment。示例文件vci-deployment.yaml代码如下:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: vci-deploymen
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          annotations:
            vke.volcengine.com/burst-to-vci: enforce  # 强制使用 VCI
            vci.vke.volcengine.com/enable-auto-create-imc: "true"  # 开启自动镜像缓存
            vke.volcengine.com/preferred-subnet-ids: subnet-3tispp1nai**** # 指定子网 ID
            vci.vke.volcengine.com/preferred-instance-family: vci.n2i # 指定 VCI 的规格族
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: cr-cn-beijing.volces.com/tw/nginx:1.0 # 容器镜像的地址和版本,请配置为您自己的镜像地址
            ports:
            - containerPort: 80
            resources:
              requests:  #指定容器的 vCPU 和内存  
                cpu: "500m"      
                memory: "1024Mi"
              limits:
                cpu: "1"      
                memory: "2048Mi"
    
  2. 执行以下命令,创建 VCI Deployment。
    kubectl apply -f vci-deployment.yaml
    

步骤三:确认镜像缓存可用

通过弹性容器实例提供的 OpenAPI:ListImageCaches,查询当前火山引擎账号下所有的镜像缓存文件信息。

注意

仅当自动创建的镜像缓存状态为 [Ready.Ok] 时,才能正常匹配和使用自动创建的镜像缓存来创建 VCI 实例。

步骤四:使用自动镜像缓存加速创建 VCI 实例

确认待使用的镜像缓存可用后,即可通过该镜像缓存,大批量创建 VCI 实例相关的 Pod。有如下两种使用方式:

说明

  • 为保证使用镜像缓存创建的 VCI 实例正常运行,请在创建 VCI 实例时,添加 Pod Annotation 手动指定系统盘大小,满足存储镜像缓存和部署 VCI 系统组件所需的空间。更多信息,请参见 Pod Annotation 说明
    其中 Annotation Key 为vci.vke.volcengine.com/desired-system-storage,Annotation Value 请根据如下原则设置:
    • 自动匹配镜像缓存:镜像大小 * (2~2.5倍)。例如您创建 VCI 实例时选择的镜像大小为 20 GiB,那么您需要指定的系统盘大小为 40 GiB~50 GiB。
    • 手动指定镜像缓存:镜像缓存大小 + 20 GiB。例如您的镜像缓存大小为 60 GiB,那么您需要指定的系统盘大小为 80 GiB。
  • 手动指定系统盘大小的功能,目前处于 邀测 阶段,请 提交邀测申请 后使用。

自动匹配镜像缓存

创建 VCI 实例时,选择已经完成自动缓存的镜像。详细操作,请参见 创建实例
系统根据匹配策略自动匹配最优的镜像缓存来创建 VCI 实例。自动匹配镜像缓存策略,请参见 使用镜像缓存

说明

若未执行 步骤二 操作,则需要在 VCI 实例的spec·template·metadata下添加特定的 Annotation:vci.vke.volcengine.com/enable-auto-create-imc:"true",开启自动镜像缓存。

手动指定镜像缓存

在 VCI 实例的spec·template·metadata下添加特定的 Annotation:vci.vke.volcengine.com/image-cache-id:imc-3uqroqkx0i3j********,指定镜像缓存 ID。详细操作,请参见 创建实例
VCI 实例在创建过程中,会直接使用指定的镜像缓存来创建。

注意

弹性容器实例会对通过vci.vke.volcengine.com/image-cache-id指定的镜像缓存状态,进行前置校验。请确保指定的镜像缓存处于 [Ready.Ok] 状态,否则将报错,无法成功创建 VCI Pod。

日常管理

镜像缓存有配额管理机制,限制一个火山引擎账号下可允许保留的最大的镜像缓存数量。您可以手动对已有的镜像缓存进行管理。建议策略如下:

  • 已经创建完成且使用过的镜像缓存,如果后续不再使用,可通过调用 OpenAPI:DeleteImageCache 删除镜像缓存。
  • 创建失败或删除失败(状态为 Failed )的镜像缓存,也可通过调用 OpenAPI:DeleteImageCache 进行删除。
  • 如需更新镜像缓存,可通过调用 OpenAPI:UpdateImageCache 进行更新。

镜像缓存也支持通过 容器服务控制台 进行 删除更新。详细操作,请参见 管理镜像缓存