全部產品
Search
文件中心

Elastic Container Instance:使用ImageCache加速建立Pod

更新時間:Jul 06, 2024

阿里雲以ImageCache CRD的方式將ECI的鏡像緩衝功能提供給Kubernetes使用者,以便Kubernetes使用者也可以使用該功能來加速建立Pod。本文介紹如何使用ImageCache加速建立Pod。

配置說明

ImageCache(即鏡像緩衝)是Cluster層級的資源,因此在不同的namespace下建立Pod時均可以使用ImageCache來實現加速建立Pod。

使用ImageCache建立Pod包括自動匹配和明確指定兩種方式。您可以在Pod層級的metadata中添加Annotation來配置。相關Annotation如下:

說明
  • 建議使用自動匹配方式。如果同時設定了兩種方式,則明確指定方式的優先順序高於自動匹配方式。更多資訊,請參見鏡像緩衝概述

  • 使用自動匹配方式時,如果您的業務情境希望在完全符合的情況下才使用ImageCache,可以設定imc-perfect-matchimc-match-count-request。此時,建議使用imc-perfect-match;如果同時設定兩者,imc-perfect-match的優先順序更高。

使用方式

配置項

樣本值

說明

自動匹配

k8s.aliyun.com/eci-auto-imc

"true"

是否自動匹配ImageCache,預設為true,表示系統會根據匹配策略自動匹配最優的ImageCache建立Pod。匹配策略的優先順序從高到低依次為:鏡像匹配度、匹配的鏡像大小、建立時間。

如果沒有完全符合,系統會在建立Pod的同時自動建立對應的ImageCache。

k8s.aliyun.com/imc-perfect-match

"true"

Pod內所有容器鏡像是否均要完全符合ImageCache。預設為false。

k8s.aliyun.com/imc-match-count-request

"2"

Pod內要完全符合ImageCache的容器鏡像個數。

明確指定

k8s.aliyun.com/eci-imc-id

imc-2zebxkiifuyzzlhl****

明確指定使用某個ImageCache存建立Pod。

重要
  • Annotation請添加在Pod的metadata下,例如:建立Deployment時,Annotation需添加在spec>template>metadata下。

  • 僅支援在建立ECI Pod時添加ECI相關Annotation來生效ECI功能,更新ECI Pod時添加或者修改ECI相關Annotation均不會生效。

配置樣本

使用ImageCache建立Pod時,請注意以下事項:

  • Pod內容器的鏡像建議採用已有ImageCache中的鏡像,可以提高匹配度。

  • Pod中容器的鏡像拉取策略(ImagePullPolicy)建議設定為按需拉取(IfNotPresent),可以避免鏡像層重複下載。

樣本一:自動匹配ImageCache

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx-test
      labels:
        app: nginx
        alibabacloud.com/eci: "true" 
      annotations:
        k8s.aliyun.com/eci-auto-imc: "true"       # 開啟自動匹配ImageCache
        k8s.aliyun.com/imc-perfect-match: "true"  # 設定Pod內所有容器鏡像均需完全符合
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80
        imagePullPolicy: IfNotPresent
      - name: busybox
        image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
        command: ["sleep"]
        args: ["999999"]
        imagePullPolicy: IfNotPresent

樣本二:明確指定ImageCache

重要

請確保指定的ImageCache的狀態為Ready,其它狀態的ImageCache會導致Pod建立失敗。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx-test
      labels:
        app: nginx
        alibabacloud.com/eci: "true" 
      annotations:
        k8s.aliyun.com/eci-imc-id: imc-2ze5tm5gehgtiiga****  # 明確指定ImageCache
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80
        imagePullPolicy: IfNotPresent