赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 弹性容器实例 ECI
  4. 操作指南
  5. Knative
  6. Knative服务管理
  7. 使用镜像加速

使用镜像加速

  • Knative服务管理
  • 发布于 2025-04-15
  • 0 次阅读
文档编辑
文档编辑

在Knative中通过镜像部署服务时,ACK集群会从远程仓库拉取镜像并创建新的Pod,如果镜像较大,会在拉镜像阶段消耗较多时间。推荐您使用ECI提供的镜像缓存(ImageCache)功能,预先将待使用的镜像制作成缓存快照,然后基于该快照来创建ECI Pod,减少启动耗时。

功能介绍

在创建ECI实例(Pod)时,大部分时间消耗在镜像下载阶段。为加速实例创建速度,ECI提供镜像缓存功能。您可以预先将需要使用的镜像制作成缓存快照,然后基于该快照来创建ECI实例(Pod),避免或者减少镜像层的下载,从而提升实例创建速度。经实测,以使用Docker Hub的Flink镜像(约386.26 MB)创建Pod为例,正常创建ECI实例(Pod)过程中,镜像准备阶段需要耗时50s。使用镜像缓存后,镜像准备阶段可以缩短至5s,极大节约实例创建耗时。

重要

此数据为理论值。创建Pod的实际提升速度由Pod中使用的镜像个数、镜像大小和镜像仓库网络因素等决定。

在ACK集群中,ECI以CRD的方式将镜像缓存功能,对应的CRD为ImageCache。ImageCache CRD是Cluster级别的资源,在不同命名空间下创建Pod时均可以使用ImageCache加速Pod的创建。

关于镜像缓存的基本功能、使用方式、计费说明等详细信息,请参见镜像缓存概述。

步骤一:创建ImageCache

  1. 使用以下示例的YAML内容,创建名为imagecache-secrets-test.yaml文件以加速拉取镜像,减少ECI实例的启动耗时。

    apiVersion: eci.alibabacloud.com/v1
    kind: ImageCache
    metadata:
      name: imagecache-sample-test
      annotations:
        k8s.aliyun.com/eci-image-cache: "true" # 开启镜像缓存复用。
    spec:
      images:
      - registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
      - registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
      imageCacheSize:
       25
      retentionDays:
       7
    说明

    如果您已经创建过镜像缓存,且新创建的镜像缓存与已有镜像缓存中的镜像层重复,可开启镜像缓存复用,加速镜像缓存的创建。

    关于以上代码参数和ImageCache的更多信息,请参见管理ImageCache。

  2. 执行以下命令,创建ImageCache。

    kubectl create -f imagecache-secrets-test.yaml
  3. 执行以下命令,查看ImageCache状态。

    kubectl get imagecache imagecache-sample-test

    预期输出:

    NAME                              AGE   CACHEID                               PHASE   PROGRESS
    imagecache-sample-test            20h   imc-2zeditzeoemfhqor****              Ready    100%

步骤二:使用ImageCache加速创建Pod

使用ImageCache创建Pod包括明确指定和自动匹配两种方式,您可以在Pod级别的metadata中添加Annotation来配置。

  • k8s.aliyun.com/eci-image-snapshot-id:明确指定使用哪个镜像缓存创建Pod。

  • k8s.aliyun.com/eci-image-cache:根据匹配策略自动选择最优的ImageCache创建Pod。

说明

如果同时设置k8s.aliyun.com/eci-image-snapshot-id和k8s.aliyun.com/eci-image-cache,则明确指定方式的优先级高于自动匹配方式。

明确指定

创建Knative Service时,您可以添加Annotationk8s.aliyun.com/eci-image-snapshot-id使用指定的ImageCache来加速创建Pod。

重要

请确保指定的ImageCache的状态为Ready,其它状态的ImageCache会导致Pod创建失败。

Knative Service示例如下。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld-go
spec:
  template:
    metadata:
      labels:
        app: helloworld-go
      annotations:
        k8s.aliyun.com/eci-image-snapshot-id: imc-2ze5tm5gehgtiiga****  # 明确指定ImageCache。
    spec:
      containers:
        - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56

自动匹配

创建Knative Service时,您可以添加k8s.aliyun.com/eci-image-cacheAnnotation使用自动匹配的ImageCache来加速创建Pod。

ECI将基于您已有的ImageCache列表,按照以下顺序进行匹配,选择最优的ImageCache来创建Pod:

  1. 过滤筛选出您在当前地域下的所有镜像缓存,且镜像缓存的大小满足ECI实例临时存储空间大小的限制。

  2. 根据匹配策略选择最优的镜像缓存,匹配策略的优先级从高到低依次为:镜像匹配度、镜像大小、创建时间。

    • 镜像匹配度:优先选择匹配度高的镜像缓存,匹配度指的是ECI实例和镜像缓存两者在镜像仓库和版本上的匹配情况。

    • 镜像大小:优先选择镜像大小最接近的镜像缓存。

    • 创建时间:优先选择最新创建的镜像缓存。

    说明

    如果没有匹配到镜像缓存,系统将在创建ECI实例(Pod)的同时自动创建镜像缓存。创建时将正常拉取镜像,建议您将容器的镜像拉取策略配置为按需拉取(IfNotPresent),以避免镜像层重复下载,影响镜像缓存的使用效果。

Knative Service示例如下。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld-go
spec:
  template:
    metadata:
      labels:
        app: helloworld-go
      annotations:
        k8s.aliyun.com/eci-image-cache: "true"  # 开启自动匹配ImageCache。
    spec:
      containers:
        - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56

相关文档

  • 关于创建、查询、删除ImageCache的具体操作,请参见管理ImageCache。

  • 关于镜像缓存涉及的计费,请参见镜像缓存计费。

相关文章

快速部署Serverless应用 2025-04-15 17:15

本文以Hello World示例为您介绍如何通过Knative快速部署一个Serverless应用。 前提条件

为Knative选择网关 2025-04-15 17:15

Knative网关提供了一种灵活的方式来接入外部流量,并将这些流量路由到不同的Knative服务上。ACK Knative支持ALB、MSE、ASM、Kourier四种网关,每种网关都有其特定的优势和适用场景。本文从产品定位、产品架构、基础路由、运维能力、性能特点、支持的主流协议和可观测能力进行对比

使用Kourier网关 2025-04-15 17:15

Kourier是一个基于Envoy架构实现的轻量级网关,是Knative社区提供的开源网关实现,提供Knative Revisions流量分发,支持gRPC服务、超时和重试、TLS证书和外部认证授权等功能。 前提条件

使用ALB网关 2025-04-15 17:15

在大规模Web应用、需要精细化流量分发、需要自动弹性伸缩等对HTTP/HTTPS请求有复杂路由需求的应用中,推荐您基于ALB网关实现Knative服务的流量分发和路由。ALB是专门面向HTTP、HTTPS和QUIC等应用层负载场景的负载均衡服务,具备超强弹性及大规模七层流量处理能力。ALB网关是一款

使用ASM网关 2025-04-15 17:15

在大规模分布式系统、微服务应用流量管理等场景下,特别是已采用或计划采用Istio作为服务网格框架的业务场景中,推荐您使用ASM网关实现Knative服务的流量分发和路由。ASM网关兼容社区Istio规范,控制面组件由ACK托管,简化了服务治理,包括服务调用之间的流量路由与拆分管理、服务间通信的认证安

使用MSE网关并实现精准自动弹性 2025-04-15 17:15

在微服务架构的业务场景下,推荐您使用MSE网关实现Knative服务的流量分发和路由。MSE网关是一款全托管免运维的网关,支持实现基于请求的精准自动弹性,即精准地控制单个Pod的请求并发处理数,能够满足大规模云原生分布式应用的流量治理诉求。 前提条件 已在集群中部署Knative,请参见

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号