ImageCache Annotation

在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/imc-cpu-arch

"arm64"

指定CPU架构。取值范围:

指定CPU架构

k8s.aliyun.com/imc-os-type

"windows"

指定操作系统。取值范围:

指定操作系统

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****"

免密拉取ACR镜像

k8s.aliyun.com/acr-service-arns

acs:ram::1609982529******:role/role-assume

ECI资源归属账号下的RAM角色的ARN。

指定RAM角色创建资源时需配置。

k8s.aliyun.com/acr-user-arns

acs:ram::1298452580******:role/role-acr

ACR实例归属账号下的RAM角色的ARN。

跨账号拉取ACR镜像时需配置。

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来拉取公网镜像。

配置EIP拉取公网镜像

k8s.aliyun.com/auto-create-eip

"true"

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

k8s.aliyun.com/eip-bandwidth

"5"

自动创建EIP时,指定EIP带宽。单位为Mbps。

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

PayByBandwidth

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

  • PayByBandwidth:按带宽计费

  • PayByTraffic:按流量计费

k8s.aliyun.com/eip-isp

BGP

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

  • BGP(默认值):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
  imageCacheSize:
   25
  retentionDays:
   7

指定CPU架构

拉取Arm架构的镜像来创建ImageCache时,需要指定CPU架构。

重要

指定CPU架构为Arm时,请先确保集群中已有Arm架构的虚拟节点。更多信息,请参见调度Pod到Arm架构的虚拟节点

apiVersion: eci.alibabacloud.com/v1
kind: ImageCache
metadata:
  name: imagecache-sample
  annotations:
    k8s.aliyun.com/imc-cpu-arch: "arm64" # 指定CPU架构为Arm
spec:
  images:
  - arm64v8/centos:7.9.2009   # 使用基于Arm架构的容器镜像
  imageCacheSize:
   25
  retentionDays:
   7

指定操作系统

拉取Windows镜像来创建ImageCache时,需要指定操作系统。

重要

指定操作系统为Windows时,请先确保集群中已有Windows虚拟节点。更多信息,请参见(邀测)调度Pod到Windows虚拟节点

apiVersion: eci.alibabacloud.com/v1
kind: ImageCache
metadata:
  name: imagecache-sample
  annotations:
    k8s.aliyun.com/imc-os-type: "windows" # 指定操作系统为Windows
spec:
  images:
  - mcr.microsoft.com/windows/nanoserver:ltsc2022   # 使用Windows容器镜像
  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
  imageCacheSize:
   25
  retentionDays:
   7

免密拉取ACR镜像

对于ACR镜像,根据ACR实例是否与待创建的ImageCache属于同一阿里云账号,以及ACR实例的类型,免密拉取镜像的支持情况如下:

账号情况

ACR类型

免密支持情况

同账号

  • 个人版

  • 企业版(默认域名)

默认自动免密,支持配置RAM角色来限制免密范围。

同账号

企业版(自定义域名)

无法自动免密,需要指定ACR实例来实现免密。

跨账号

  • 个人版

  • 企业版

无法自动免密,需要配置RAM角色来实现免密。

具体配置,请参见免密拉取ACR镜像

使用自建镜像仓库

使用自建镜像仓库中的镜像创建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
  imageCacheSize:
   25
  retentionDays:
   7

开启极速镜像缓存

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

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

说明

本地快照创建完成后,系统将自动开始创建标准快照,在此期间,镜像缓存对应使用本地快照;待标准快照创建完成后,系统将自动删除本地快照,在此之后,镜像缓存对应使用标准快照。

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
  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

配置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
      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的带宽,单位为Mbps
        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
      imageCacheSize:
       25
      retentionDays:
       7