全部產品
Search
文件中心

Elastic Container Instance:ImageCache Annotation

更新時間:Jul 06, 2024

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

免密拉取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 Gateway的情況下,可綁定已有的EIP來拉取公網鏡像。

配置EIP拉取公網鏡像

k8s.aliyun.com/auto-create-eip

"true"

是否自動建立並綁定EIP。在沒有配置NAT Gateway的情況下,可自動建立並綁定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
  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鏡像,根據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
  imagePullSecrets:
  - default:secret1
  - default:secret2
  - kube-system:secret3
  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
  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拉取公網鏡像

Elastic IP Address(EIP)是可以獨立購買和持有的公網IP地址資源,當EIP與雲資源綁定時,雲資源可以通過EIP與公網通訊。更多關於EIP的資訊,請參見Elastic IP Address

建立ImageCache時,如果您需要從公網拉取鏡像,則需要確保當前網路能夠串連公網。串連公網包括配置NAT Gateway和配置EIP兩種方式。如果您的VPC沒有綁定NAT Gateway,您可以配置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的頻寬,單位為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
      imagePullSecrets:
      - default:secret1
      - default:secret2
      - kube-system:secret3
      imageCacheSize:
       25
      retentionDays:
       7