传统容器运行需要将全量镜像数据下载后再解包,然而容器启动可能仅使用其中部分的内容,导致容器启动耗时长。通过容器镜像服务企业版的按需加载功能,您可以在业务部署中使用加速镜像版本,实现镜像数据免全量下载和在线解压,大幅提升应用分发效率,享受极致的弹性体验。本文介绍如何按需加载容器镜像。

前提条件

  • 已创建ACK集群。更多信息,请参见创建Kubernetes托管版集群
    说明 仅支持在版本≥1.16.9的托管版和专有版集群上使用加速镜像。且创建集群时需要设置容器运行时为Docker运行时,操作系统为Aliyun linux 2.1903或CentOS 7.7。
  • 已创建企业版实例,更多信息,请参见创建企业版实例
  • 已在企业版实例中配置ACK集群对应的专有网络。加速镜像需要在专有网络中使用,更多信息,请参见配置专有网络的访问控制

背景信息

通过容器镜像服务企业版的按需加载功能,您可以在业务部署中使用加速镜像版本,实现镜像数据免全量下载和在线解压,大幅提升应用分发效率,享受极致的弹性体验。镜像的加速效果与镜像大小、镜像仓库网络等因素有关。经实测,基于Docker Hub的nodebb镜像(1.34GB)启动应用在镜像拉取阶段需耗费36s,整体应用启动时间38s。基于加速镜像启动应用在镜像拉取阶段仅需4s,整体应用启动时间仅需9s。

转换加速镜像

目前支持仓库级别配置,自动将推送的原始镜像转换为加速镜像。镜像转换时间取决于您的镜像大小,原始镜像不受任何影响。
说明 加速镜像的命名空间和仓库名称与原始镜像保持一致,tag格式为原始镜像tag加_accelerated后缀。
  1. 登录容器镜像服务控制台
  2. 在顶部菜单栏,选择所需地域。
  3. 在左侧导航栏,选择企业版实例 > 实例列表
  4. 实例列表页面,单击对应的企业版实例或操作列中的管理
  5. 在实例管理页左侧导航栏中选择仓库管理 > 镜像仓库
  6. 在镜像仓库页面单击目标镜像仓库名称或目标镜像仓库右侧操作列下的管理
  7. 在基本信息页面右上角单击修改信息
  8. 修改基本信息对话框中选中镜像加速复选框,单击确认
    在完成镜像加速转换设置后,您后续推送的镜像将自动触发镜像转换任务。若您希望接收镜像转换完成的通知,可以配置表达式触发器。例如将表达式设置为_accelerated$,更多信息,请参见触发器管理

安装镜像加速组件

为了启动加速容器,需要在Worker节点安装按需加载相关的镜像存储插件。

  1. 为节点添加镜像加速标签。
    在创建Woker节点时,您可以为节点添加镜像加速标签(alibabacloud.com/image-accelerate-enabled: true),以便在节点初始化时开启镜像加速能力。设置镜像加速标签后,在节点初始化过程中会自动安装镜像存储插件。
    说明 加速容器需运行在加速节点上,加速节点可同时支持普通容器与加速容器的运行。
    • 集群创建时添加镜像加速标签。

      您可以在创建集群时,设置标签为alibabacloud.com/image-accelerate-enabled: true。更多信息,请参见创建Kubernetes托管版集群

    • 扩容节点时添加镜像加速标签。
      您可以扩容节点时设置节点标签为alibabacloud.com/image-accelerate-enabled: true。更多信息,请参见扩容节点池
      说明 您可以创建单独的节点池以便统一管理具备镜像加速能力的节点。
    • 添加已有节点时添加镜像加速标签。

      您可以在添加已有节点时,设置标签为alibabacloud.com/image-accelerate-enabled: true。更多信息,请参见添加已有节点

  2. 安装镜像加速组件。
    1. 登录容器服务管理控制台
    2. 在控制台左侧导航栏中,单击集群
    3. 集群列表页面,选择目标集群,并在目标集群右侧操作列下,选择更多 > 系统组件管理
    4. 在组件管理页面可选组件区域找到aliyun-acr-acceleration-suite,单击右侧的安装
    5. 安装组件对话框中单击确定
      在集群管理页左侧导航栏中,单击工作负载。单击守护进程集页签,在守护进程集页签查看组件安装情况,当目标组件的容器组数量显示全部启动完成,表示组件安装成功。

卸载镜像加速组件

说明 卸载前请确保目前无正在运行的加速容器。
  1. 登录容器服务管理控制台
  2. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  3. 在集群管理页左侧导航栏选择运维管理 > 组件管理
  4. 在组件管理页面可选组件区域找到aliyun-acr-acceleration-suite,单击右侧的卸载
  5. 卸载组件对话框中单击确定

部署加速镜像

  1. 设置镜像仓库访问凭证。
    • 镜像免密插件方式。
    • 命令行方式。
      创建名称以acr-credential-开头的、类型为kubernetes.io/dockerconfigjson的Secret。
      kubectl create secret docker-registry acr-credential-test --docker-server=RegistryVpcDomain --docker-username=UserName --docker-password=Password
  2. 为命名空间添加镜像加速标签。
    • 通过控制台添加镜像加速标签。
      1. 登录容器服务管理控制台
      2. 在控制台左侧导航栏中,单击集群
      3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
      4. 在集群管理页面单击命名空间
      5. 命名空间页面单击目标命名空间操作列的编辑
      6. 编辑命名空间对话框中设置标签变量名称为alibabacloud.com/image-accelerate-enabled,标签变量值为true,然后单击确定
    • 通过命令行添加镜像加速标签。
      kubectl label namespaces default alibabacloud.com/image-accelerate-enabled=true
    设置加速标签后,如果您已完成普通镜像到加速镜像的转换,在相应命名空间内创建和更新pod时,加速组件会自动将Pod的原始镜像地址替换为加速镜像地址,并添加nodeSelector,将Pod调度到加速节点。