按需加载容器镜像

最近更新时间:2024-03-25 10:36:00

我的收藏

操作场景

在使用容器镜像部署更新业务应用时,传统方案将下载全量的容器镜像数据并解压,一方面导致容器启动耗时较长,另一方面也可能因为集群规模过大,下载解压环节造成较大的网络,磁盘读写压力,进而导致大规模容器启动不符合部署预期。实际上在容器启动时,可能仅使用容器镜像内的部分数据。n容器镜像服务企业版支持按需加载功能,您可在业务部署中使用经转换的加速镜像版本,实现镜像数据免全量下载和在线解压,大幅提升应用分发效率,享受极致的弹性体验。本文介绍如何按需加载容器镜像。

前提条件

已成功 创建容器集群。当前按需加载功能仅面向腾讯云 容器服务TKE 提供适配支持,且需集群具备以下配置:
集群 Kubernetes版本 在1.16及以上。
集群 运行时组件 为 containerd,且版本为1.4.3。已创建的集群可修改运行时配置至 containerd 1.4.3,调整后添加的节点默认为此版本运行时。
集群操作系统为 Ubuntu,TencentOS,CentOS。如果使用 CentOS,需要在集群节点上执行 yum install -y fuse 安装 fuse 应用。
已成功 购买企业版实例。按需加载容器镜像功能当前仅限高级版实例开启使用。
容器集群所在私有网络 VPC 已接入至企业版实例,允许集群节点内网访问实例内镜像,具体配置可参考 配置私有网络的访问控制

准备加速镜像

开启镜像加速

1. 登录 容器镜像服务 控制台,选择左侧导航栏中的镜像加速
2. 在“镜像加速”页面选择需要开启镜像加速的实例地域和实例名称,可查看当前实例镜像加速的状态及镜像加速规则列表。
3. 单击开启镜像加速,在“开通镜像加速服务”窗口中,请仔细阅读相关提示。如下图所示: n


开启镜像加速后,上传符合加速规则的容器镜像,将生成新的 OCI 格式兼容的加速镜像。
请注意,开启并使用该功能后,同时存储普通镜像及加速镜像将带来额外的镜像存储成本。
4. 单击确定即可为当前实例开启镜像加速功能。

添加镜像加速规则

1. 单击添加镜像加速规则,在“新建镜像加速规则”窗口中,参考以下提示进行规则配置。如下图所示: n


名称:规则名称。
描述:规则描述,支持中文。
触发规则
触发实例:当前所选实例即为触发实例。
命名空间:当前实例内需要加速分发的命名空间,暂不支持选择全部命名空间。
仓库名称:加速的仓库,支持正则表达式筛选。不填写则默认为命名空间内全部仓库。
版本Tag:加速的版本,支持正则表达式筛选。不填写则默认为符合条件的仓库内所有版本。
验证规则:输入需要加速的镜像地址,验证当前规则下该镜像是否满足加速规则。
2. 单击确定即可为当前实例添加镜像加速规则。

推送镜像并自动转换

成功添加规则后,可在“镜像加速”页面查看已添加的镜像加速规则。确认规则状态为开启中,并向符合规则的镜像仓库内推送新的容器镜像,自动触发加速镜像格式转换,生成带有 -apparate 后缀的加速镜像。默认镜像的制品类型为 Docker-Image,经转换后的镜像制品类型为 OCI-Image-v1。n



部署加速镜像

容器服务 TKE 是腾讯云官方提供的 Kubernetes 托管服务,与容器镜像服务 TCR 紧密结合,您可在 TKE 集群中安装 TCR 加速应用,部署加速镜像,提高业务启动速度。

配置集群节点

集群节点默认不支持使用加速镜像,节点若需优先使用加速镜像,您可通过命令行或容器服务控制台为集群节点添加镜像加速标签。
通过命令行添加镜像加速标签
通过控制台添加镜像加速标签
您可执行以下命令为集群节点添加镜像加速标签:
kubectl label node xxx cloud.tencent.com/apparate=true
1. 登录 容器服务控制台,选择左侧导航栏中的集群
2. 在“集群管理”页面单击需要使用镜像加速分发功能的集群 ID,进入集群详情页。
3. 设置节点 Label 的集群 ID/名称,进入集群详情。
4. 在左侧导航栏中,选择 “节点管理” > “节点”,进入“节点列表” 页面。
5. 选择需要设置 Label 的节点行,单击更多 > 编辑标签
6. 在弹出的 “编辑 Label” 窗口中,编辑 Label 为 cloud.tencent.com/apparate=true,单击提交

安装加速应用

集群默认不支持使用加速镜像,需要在集群安装 TCR 加速套件应用。安装 TCR 加速套件应用后,已经被标记为支持部署加速镜像的节点将自动部署守护进程 daemonset,并可正常加载加速镜像。n在安装 TCR 加速套件应用,新增节点并使用 cloud.tencent.com/apparate=true 标记,节点也将自动部署守护进程,并可正常部署加速镜像。

通过命令行安装加速套件应用

1. 安装 Helm V3 命令行工具,参考 使用 Helm 客户端上传及下载 Helm Chart
2. 添加 Helm Repo,并拉取 TCR 加速应用 Chart
helm repo add tcr-helm-public https://helmhub.tencentcloudcr.com/chartrepo/public
helm pull tcr-helm-public/apparate --version 1.0.0
3. 解压已下载 Chart,并修改 values.yaml
tar -xzvf apparate-1.0.0.tgz
vim apparate/values.yaml
其中,请配置以下参数:
3.1 imagePullSecretsCrs:此配置用于拉取加速镜像。请修改其中的 dockerUsername,dockerPassword,dockerServer,分别填写企业版实例的用户名,密码及访问域名。
3.2 image:保持默认即可,此配置用于集群安装应用时拉取基础镜像。如集群是非中国大陆内部署,可修改为对应地域个人版镜像仓库的访问域名。
4. 重新打包 Chart,并安装至指定集群
helm package apparate/
helm install apparate apparate-1.0.0.tgz
执行 helm install 需要预先在本地配置集群的访问凭证,具体可参考:本地 Helm 客户端连接集群
5. 进入 集群应用 页面,确认应用的安装状态及配置。

部署加速镜像

新建工作负载时选择实例内镜像,仅当符合以下条件时,集群将实现镜像按需加载,极速启动容器:
工作负载所指定的容器镜像为已经转换的加速格式镜像,如 nginx:latest-apparate,制品类型为 OCI-Image-v1。
工作负载 Pod 被调度到的节点已添加使用镜像加速的标签,即已添加 cloud.tencent.com/apparate=true
因此,在创建工作负载时,请选择加速镜像版本,并添加 nodeSelector,设置为 cloud.tencent.com/apparate=true,该工作负载将强制调度至支持加速镜像的节点上,实现加速启动。

常见问题

是否可以删除常规镜像及加速镜像?

可以,当镜像仓库内同时存在常规镜像和对应的加速镜像,删除其中一个镜像并不影响另一个的正常拉取及部署。

推送镜像后,未自动生成加速镜像怎么办?

首先请检查该镜像是否匹配已有加速规则,如确定已符合启用状态的加速规则,您可咨询 智能客服在线咨询 寻求帮助。