本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
传统容器运行需要将全量镜像数据下载后再解包,然而容器启动可能仅使用其中部分的内容,导致容器启动耗时长。通过容器镜像服务企业版的按需加载功能,允许仅下载和解压容器启动所必需的部分,而不是整个镜像,从而大幅提高应用部署速度和提升弹性体验。
前提条件
支持ACK集群版本及类型。
说明支持在版本≥1.16.9的托管版、专有版,≥1.26.3的ACK Edge集群和ACK Serverless集群、ACK灵骏集群和容器计算服务ACS上使用加速镜像。且创建集群时操作系统为Alibaba Cloud Linux 2.1903、Alibaba Cloud Linux 3.2104、Alibaba Cloud Linux 3.2104 LTS 64 bit ARM edition、Alibaba Cloud Linux UEFI 2.1903、CentOS 7.9。
已创建企业版实例,更多信息,请参见创建企业版实例。
重要在镜像加速中,两种模式支持的企业版实例规格有所不同:
完整模式:支持的企业版实例为标准版或高级版。
仅索引模式:支持的企业版实例为基础版、标准版或高级版。
已在企业版实例中配置ACK或ACK Serverless集群对应的专有网络。加速镜像需要在专有网络中使用,更多信息,请参见配置专有网络的访问控制。
背景信息
通过容器镜像服务企业版的按需加载功能,您可以在业务部署中使用加速镜像版本,实现镜像数据免全量下载和在线解压,大幅提升应用分发效率和弹性体验。镜像的加速效果与镜像大小、镜像仓库网络等因素有关。经实测,基于Docker Hub的NodeBB镜像(1.34 GB)启动应用在镜像拉取阶段需耗费36s,整体应用启动时间38s。基于加速镜像启动应用在镜像拉取阶段仅需4s,整体应用启动时间仅需9s。
使用限制
如果您的容器运行时为Containerd,则支持加速镜像仓库使用自定义域名,而Docker由于自身限制暂不支持加速镜像仓库自定义域名的使用。更多信息,请参见通过自定义域名访问容器镜像服务企业版实例。
仅索引模式不支持在FC和SAE的场景下使用。
地域限制
金融云与政务云地域不支持按需加载功能。
转换加速镜像
目前支持仓库级别配置,自动将推送的原始镜像转换为加速镜像。镜像转换时间取决于您的镜像大小,原始镜像不受任何影响。
加速镜像的命名空间和仓库名称与原始镜像保持一致,Tag格式为:
仅索引模式:原始镜像tag+
_accelerated
后缀的加速镜像仅支持Containerd运行时,且使用时原始镜像tag不可删除。完整模式:
原始镜像tag+
_accelerated
后缀的加速镜像。支持Docker和Containerd运行时原始镜像tag+
_containerd_accelerated
后缀的加速镜像仅适用于Containerd运行时。注意使用时
_containerd_accelerated
后缀的镜像均不可删除。
登录容器镜像服务控制台。
在顶部菜单栏,选择所需地域。
在左侧导航栏,选择实例列表。
在实例列表页面单击目标企业版实例。
在企业版实例管理页左侧导航栏中选择 。
在镜像仓库页面单击目标镜像仓库名称或目标镜像仓库右侧操作列下的管理。然后在基本信息页面左上角单击编辑。
在修改基本信息对话框中,开启镜像加速,并选择所需模式后,单击确定。
完整模式:容器启动的加速效果较为显著,转换生成的加速镜像体积约为原镜像体积的130%,1GB原始镜像生成加速镜像的时间约为25秒,已生成的镜像层不会重复生成。
仅索引模式:容器启动的加速效果约为70%完整模式加速效果,加速镜像体积约为3%原镜像体积,1GB原始镜像生成加速镜像时间约为3秒,已生成索引的镜像层不会重复生成。
重要仅索引模式正在公测中,建议您使用前先在测试环境进行验证,验证适用您的业务场景后再应用到生产环境中。
说明仅索引模式目前仅适用于
tar
和tgz
压缩的镜像,不适用于其他压缩方式(如zstd
压缩)的镜像。仅索引模式需要绑定原始镜像使用,使用时原始镜像不可删除,完整模式可以独立使用加速镜像。
仅索引模式不支持Docker运行时使用。
在完成镜像加速转换设置后,您后续推送的镜像将自动触发镜像转换任务。若您希望接收镜像转换完成的通知,可以配置事件通知。例如将表达式设置为
_accelerated$
,更多信息,请参见事件通知。(可选)指定预取文件列表。该列表中出现的文件项将在加速镜像启动的时候被优先预取,推荐在容器启动需要读取大文件时使用该功能。
说明格式为每行一个文件绝对路径,如果为目录则需要以
/
结尾。
安装镜像加速组件
为了启动加速容器,需要在Worker节点安装按需加载相关的镜像存储插件。
为了支持DADI加速镜像,您可以在ACK控制台中,通过节点池的容器镜像加速开关,为新建节点池或存量节点池启用节点的镜像加速功能。
ACK托管版集群
为新建节点池时开启
为已有节点池开启
开启或关闭节点池容器镜像加速开关后,仅对新增节点生效。如需针对存量节点生效,需要将节点移除出节点池后,重新添加回节点池,相关操作,请参见移除节点并添加已有节点。
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在节点池列表页面,单击目标节点池所在行操作列的编辑,在高级选项中,勾选容器镜像加速,按照页面提示更新节点池的配置项。
在节点池列表,如果节点池状态显示更新中,表明节点池正在变更中。显示已激活,表明变更已完成。
其它类型集群
在创建Woker节点池时,您可以为节点设置镜像加速标签
alibabacloud.com/image-accelerate-enabled: true
,以便在节点初始化时开启镜像加速能力。设置镜像加速标签后,在节点初始化过程中会自动安装镜像存储插件。为新建节点池开启
为已有节点池开启
开启或关闭节点池容器镜像加速开关后,仅对新增节点生效。如需针对存量节点生效,需要将节点移除出节点池后,重新添加回节点池,相关操作,请参见移除节点并添加已有节点。
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在节点池页面,单击目标节点池所在行操作列的编辑,在高级选项中为节点设置
alibabacloud.com/image-accelerate-enabled: true
的标签。
安装镜像加速组件。
登录容器服务管理控制台。
在控制台左侧导航栏,单击集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在组件管理页面的其他区域找到aliyun-acr-acceleration-suite,单击右侧的安装。
在提示对话框中单击确定。
在集群管理页面左侧导航栏,选择
,在守护进程集页面,查看组件守护进程安装详情。在集群管理页面左侧导航栏,选择
,在无状态页面查看组件无状态应用安装详情。
当目标组件的容器组数量显示全部启动完成,表示组件安装成功。
启用加速镜像
设置镜像仓库访问凭证。
警告请确保您的镜像拉取密钥权限按最小权限原则配置,仅包含拉取本集群所需业务镜像的权限。更多详情,请参见授予RAM用户自定义策略。
镜像免密插件方式。
若已使用免密插件,且企业版实例的免密配置正确,无需其他操作。
若未使用免密插件,您可使用免密插件,更多信息,请参见使用免密组件拉取容器镜像。
指定镜像拉取凭证Secret的标签方式。
说明仅镜像加速组件的版本不小于0.2.6支持该方式。
创建kubernetes.io/dockerconfigjson的Secret,并为其打上images.alibabacloud.com/accelerated: true的标签。
kubectl create secret docker-registry <SecretName> --docker-server=<RegistryVpcDomain> --docker-username=<UserName> --docker-password=<Password>
kubectl label secrets <SecretName> images.alibabacloud.com/accelerated="true"
添加镜像加速标签。
您可以为应用负载添加镜像加速标签,例如Pod、Deployment等。也可以为ACK或ACK Serverless集群的命名空间设置标签,该命名空间内的所有符合加速条件的应用负载会启用按需加载容器镜像,无需再修改所有符合加速条件的应用负载的YAML文件。根据实际情况选择任一方式添加镜像加速标签。
说明标签的名称为
k8s.aliyun.com/image-accelerate-mode
,值为on-demand
。为应用负载添加镜像加速标签。
以下以Pod为例设置标签。执行以下命令,为Deployment管理的Pod设置标签。
kubectl edit deployment <Deployment名称> -n <Deployment命名空间>
在Deployment的YAML描述文件中添加标签
k8s.aliyun.com/image-accelerate-mode: on-demand
。apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx # enable on-demand mode k8s.aliyun.com/image-accelerate-mode: on-demand spec: containers: # your ACR instacne image - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest name: test command: ["sleep", "3600"]
为命名空间添加镜像加速标签
通过控制台添加镜像加速标签。
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择命名空间与配额。
在命名空间页面单击目标命名空间操作列的编辑。
在编辑命名空间对话框中设置标签的变量名称为
k8s.aliyun.com/image-accelerate-mode
,标签的变量值为on-demand
,然后单击确定。
通过命令行添加镜像加速标签。
kubectl label namespaces <YOUR-NAMESPACE> k8s.aliyun.com/image-accelerate-mode=on-demand
设置加速标签后,如果您已完成普通镜像到加速镜像的转换,在相应命名空间内创建和更新Pod时,加速组件会自动将Pod的原始镜像地址替换为加速镜像地址,并添加nodeSelector,将Pod调度到加速节点。