全部产品
Search
文档中心

弹性容器实例:ImageCache Annotation

更新时间:Dec 27, 2022

在Kubernetes场景下,您可以通过ImageCache CRD使用ECI的镜像缓存功能,以加速创建Pod。创建ImageCache资源时,为充分使用镜像缓存功能,您可以根据需要为ImageCache添加Annotation。本文介绍ImageCache支持的Annotation,并提供配置示例。

ImageCache Annotation列表

ImageCache目前支持的Annotation如下表所示。

参数

示例值

描述

k8s.aliyun.com/vswitch-ids

"vsw-bp1dktddjsg5nktv****,vsw-bp1xpiowfm5vo8o3c****"

指定交换机。支持指定多个交换机实现多可用区功能。不指定时,默认采用eci-profile中配置的vSwitch。

k8s.aliyun.com/security-group-id

"sg-bp1dktddjsg5nktv****"

指定安全组。不指定时,默认采用eci-profile中配置的安全组。

k8s.aliyun.com/resource-group-id

"rg-aek2z3elfs4****"

指定资源组。不指定时,默认采用eci-profile中配置的资源组。

k8s.aliyun.com/acr-instance-ids

"cri-j36zhodptmyq****"

指定ACR企业版实例,用于免密拉取镜像。

支持跨地域指定ACR企业版实例,此时需在实例ID前加上所属地域,例如"cn-beijng:cri-j36zhodptmyq****"

k8s.aliyun.com/plain-http-registry

"harbor***.pre.com,192.168.XX.XX:5000,reg***.test.com:80"

指定自建镜像仓库地址。

使用HTTP协议的自建镜像仓库中的镜像创建ImageCache时,需配置该参数使得ECI使用HTTP协议拉取镜像,避免因协议不同而导致镜像拉取失败。

k8s.aliyun.com/insecure-registry

"harbor***.pre.com,192.168.XX.XX:5000,reg***.test.com:80"

指定自建镜像仓库地址。

使用自签发证书的自建镜像仓库中的镜像创建ImageCache时,需配置该参数来跳过证书认证,避免因证书认证失败而导致镜像拉取失败。

k8s.aliyun.com/imc-enable-reuse

"true"

是否开启镜像缓存复用。开启后,新创建的镜像缓存可以复用已有镜像缓存的镜像层,加快镜像缓存的制作速度。

k8s.aliyun.com/imc-enable-flash

"true"

是否开启极速镜像缓存功能,开启后,将临时创建一份本地快照,可以缩短镜像缓存的创建时长。需收取快照极速可用的相关费用。

k8s.aliyun.com/imc-retention-days

"7"

设置镜像缓存保留时长,单位为天。过期的镜像缓存将被自动清理。默认永不过期。

k8s.aliyun.com/imc-size

"25"

设置镜像缓存大小。默认为20 GiB。取值范围为20~32768 GiB。

k8s.aliyun.com/eip-instance-id

"eip-bp1q5n8cq4p7f6dzu****"

绑定EIP。在没有配置NAT网关的情况下,可绑定已有的EIP来拉取公网镜像。

k8s.aliyun.com/auto-create-eip

"true"

是否自动创建并绑定EIP。在没有配置NAT网关的情况下,可自动创建并绑定EIP来拉取公网镜像。

k8s.aliyun.com/eip-bandwidth

"5"

自动创建EIP时,指定EIP带宽。

k8s.aliyun.com/eip-internet-charge-type

PayByBandwidth

自动创建EIP时,指定EIP的计量方式。取值范围:

  • PayByBandwidth:按带宽计费

  • PayByTraffic:按流量计费

k8s.aliyun.com/eip-isp

BGP

自动创建EIP时,指定EIP线路类型。仅按量付费的EIP支持指定。取值范围:

  • BPG:BGP(多线)线路

  • BGP_PRO:BGP(多线)精品线路

k8s.aliyun.com/eip-common-bandwidth-package-id

"cbwp-2zeukbj916scmj51m****"

指定共享带宽包。

多可用区创建资源

创建ImageCache的过程中,系统将临时创建一个ECI实例用于中转创建ImageCache。为避免ECI实例资源库存的影响,保证ImageCache可以创建成功,您可以指定多个交换机来实现多可用区功能。

说明

创建ImageCache时,默认采用集群或者虚拟节点的交换机信息,如果集群或者虚拟节点已配置多可用区,则可以不指定。

apiVersion: eci.alibabacloud.com/v1
kind: ImageCache
metadata:
  name: imagecache-sample
  annotations:
    k8s.aliyun.com/vswitch-ids: "vsw-bp1dktddjsg5nktv****,vsw-bp1xpiowfm5vo8o3c****" #指定多个交换机
spec:
  images:
  - centos:latest
  - busybox:latest
  imagePullSecrets:
  - default:secret1
  - default:secret2
  - kube-system:secret3
  imageCacheSize:
   25
  retentionDays:
   7

设置安全组和资源组

创建ImageCache时,默认采用eci-profile中配置的安全组和资源组。如果您有特殊需求,可以指定安全组和资源组。

apiVersion: eci.alibabacloud.com/v1
kind: ImageCache
metadata:
  name: imagecache-sample
  annotations:
    k8s.aliyun.com/security-group-id: "sg-bp1dktddjsg5nktv****" #指定安全组
    k8s.aliyun.com/resource-group-id: "rg-aek2z3elfs4****"  #指定资源组
spec:
  images:
  - centos:latest
  - busybox:latest
  imagePullSecrets:
  - default:secret1
  - default:secret2
  - kube-system:secret3
  imageCacheSize:
   25
  retentionDays:
   7

免密拉取ACR镜像

容器镜像服务ACR是面向容器镜像、Helm Chart等符合OCI标准的云原生制品安全托管及高效分发平台,能够与容器服务ACK无缝集成,支持大规模和大镜像分发加速、多代码源构建加速等全链路加速能力。更多关于ACR的信息,请参见容器镜像服务ACR

如果您使用ACR企业版实例来管理您的镜像,创建ImageCache时,您可以指定ACR企业版实例,从对应的ACR实例中免密拉取镜像。

说明

ACR企业版实例支持跨地域使用,即指定的ACR企业版实例与ImageCache的所属地域可以不同。指定时,需在实例ID前加上所属地域,例如k8s.aliyun.com/acr-instance-ids: "cn-beijing:cri-j36zhodptmyq****"

apiVersion: eci.alibabacloud.com/v1
kind: ImageCache
metadata:
  name: imagecache-sample
  annotations:
    k8s.aliyun.com/acr-instance-ids: "cri-j36zhodptmyq****" #指定ACR企业版实例
spec:
  images:
  - centos:latest
  - busybox:latest
  imagePullSecrets:
  - default:secret1
  - default:secret2
  - kube-system:secret3
  imageCacheSize:
   25
  retentionDays:
   7

使用自建镜像仓库

使用自建镜像仓库中的镜像创建ImageCache时,如果镜像仓库采用HTTP协议,或者使用自签发证书,需配置相关Annotation避免镜像拉取失败。

  • 自建镜像仓库采用HTTP协议

    由于ECI默认使用HTTPS协议拉取镜像,则创建ImageCache,需要配置k8s.aliyun.com/plain-http-registry,使得ECI使用HTTP协议与镜像仓库进行交互。

    apiVersion: eci.alibabacloud.com/v1
    kind: ImageCache
    metadata:
      name: imagecache-sample
      annotations:
        k8s.aliyun.com/plain-http-registry: "192.168.XX.XX:5000"  #指定自建镜像仓库地址,使用HTTP协议拉取镜像
    spec:
      images:
      - 192.168.XX.XX:5000/test/nginx:latest
      imagePullSecrets:
      - default:secret1
      - default:secret2
      - kube-system:secret3
      imageCacheSize:
       25
      retentionDays:
       7
  • 自建镜像仓库使用自签发证书

    使用自签发证书的情况下,拉取镜像时无法通过证书认证,需要配置k8s.aliyun.com/insecure-registry,以跳过证书认证。

    apiVersion: eci.alibabacloud.com/v1
    kind: ImageCache
    metadata:
      name: imagecache-sample
      annotations:
        k8s.aliyun.com/insecure-registry: "harbor***.pre.com"  #指定自建镜像仓库地址,拉取镜像时跳过正式认证
    spec:
      images:
      - harbor***.pre.com/test/nginx:latest
      imagePullSecrets:
      - default:secret1
      - default:secret2
      - kube-system:secret3
      imageCacheSize:
       25
      retentionDays:
       7
说明

  • 如果有多个容器的镜像需要从不同的镜像仓库中拉取,支持填写多个镜像仓库地址,各个地址之间采用半角逗号隔开,例如harbor***.pre.com,192.168.XX.XX

  • 如果镜像仓库地址有端口号,则需要带上端口号,例如:镜像地址为192.168.XX.XX:5000/nginx:latest,则Annotation的值需设置为192.168.XX.XX:5000

开启镜像缓存复用

ImageCache的创建时长由镜像大小,网络等多种因素决定。创建ImageCache时,支持开启镜像缓存复用功能来加快ImageCache的创建速度。

开启镜像缓存复用后,在创建ImageCache的过程中,系统将自动匹配已有ImageCache,如果新的ImageCache与已有ImageCache存在重复的镜像层,新的ImageCache将复用已有ImageCache的镜像层,从而加速ImageCache的创建。

apiVersion: eci.alibabacloud.com/v1
kind: ImageCache
metadata:
  name: imagecache-sample
  annotations:
    k8s.aliyun.com/imc-enable-reuse: "true" #开启镜像缓存复用
spec:
  images:
  - centos:latest
  - busybox:latest
  imagePullSecrets:
  - default:secret1
  - default:secret2
  - kube-system:secret3
  imageCacheSize:
   25
  retentionDays:
   7

开启极速镜像缓存

ImageCache的创建时长由镜像大小、网络等多种因素决定。创建ImageCache时,支持开启极速镜像缓存功能来缩短创建时长。

开启极速镜像缓存后,在创建ImageCache的过程中,系统将临时创建一份本地快照。本地快照基于快照极速可用功能,可以快速创建,创建完成后即可使用ImageCache。

说明

  • 本地快照按次数和快照容量收费,费用=次数单价*1次+极速可用快照单价*快照容量*使用时长。

  • 本地快照创建完成后,系统将自动开始创建普通快照。待普通快照创建完成后,本地快照将被自动删除。

apiVersion: eci.alibabacloud.com/v1
kind: ImageCache
metadata:
  name: imagecache-sample
  annotations:
    k8s.aliyun.com/imc-enable-flash: "true" #开启极速镜像缓存
spec:
  images:
  - centos:latest
  - busybox:latest
  imagePullSecrets:
  - default:secret1
  - default:secret2
  - kube-system:secret3
  imageCacheSize:
   25
  retentionDays:
   7

设置镜像缓存的大小和保留时长

默认情况下,手动创建的ImageCache的大小为20 GiB,且创建后会一直保留。如果您想要自定义设置ImageCache的大小和保留时长,除了设置spec中的imageCacheSize和retentionDays参数外,还支持通过Annotation设置。

apiVersion: eci.alibabacloud.com/v1
kind: ImageCache
metadata:
  name: imagecache-sample
  annotations:
    k8s.aliyun.com/imc-retention-days: "7" #设置镜像缓存保留时长
    k8s.aliyun.com/imc-size: "25" #设置镜像缓存大小
spec:
  images:
  - centos:latest
  - busybox:latest
  imagePullSecrets:
  - default:secret1
  - default:secret2
  - kube-system:secret3

配置EIP(拉取公网镜像)

弹性公网IP(EIP)是可以独立购买和持有的公网IP地址资源,当EIP与云资源绑定时,云资源可以通过EIP与公网通信。更多关于EIP的信息,请参见弹性公网IP

创建ImageCache时,如果您需要从公网拉取镜像,则需要确保当前网络能够连接公网。连接公网包括配置NAT网关和配置EIP两种方式。如果您的VPC没有绑定NAT网关,您可以配置EIP来拉取公网镜像。配置EIP包括以下两种方式:

说明

创建ImageCache的过程中,系统将临时创建一个中转的ECI实例,此时EIP将绑定到该ECI实例上。ImageCache创建完成后,原先已有的EIP将被保留,自动创建的EIP将随ECI实例自动释放。

  • 绑定已有EIP

    apiVersion: eci.alibabacloud.com/v1
    kind: ImageCache
    metadata:
      name: imagecache-sample
      annotations:
        k8s.aliyun.com/eip-instance-id: "eip-bp1q5n8cq4p7f6dzu****" #绑定已有的EIP
    spec:
      images:
      - centos:latest
      - busybox:latest
      imagePullSecrets:
      - default:secret1
      - default:secret2
      - kube-system:secret3
      imageCacheSize:
       25
      retentionDays:
       7
  • 自动创建并绑定EIP

    apiVersion: eci.alibabacloud.com/v1
    kind: ImageCache
    metadata:
      name: imagecache-sample
      annotations:
        k8s.aliyun.com/auto-create-eip: "true" #自动创建并绑定EIP
        k8s.aliyun.com/eip-bandwidth: "10" #设置EIP的带宽
        k8s.aliyun.com/eip-internet-charge-type: PayByBandwidth #设置EIP的计量方式
        k8s.aliyun.com/eip-common-bandwidth-package-id: "cbwp-2zeukbj916scmj51m****" #使用共享带宽包
    spec:
      images:
      - centos:latest
      - busybox:latest
      imagePullSecrets:
      - default:secret1
      - default:secret2
      - kube-system:secret3
      imageCacheSize:
       25
      retentionDays:
       7