阿里雲以ImageCache CRD的方式將ECI的鏡像緩衝功能提供給Kubernetes使用者,以便Kubernetes使用者也可以使用該功能來加速建立ECI Pod。本文介紹ImageCache資源,以及如何建立、查詢和刪除ImageCache。
準備工作
登入Kubernetes叢集,執行以下命令,驗證您的Kubernetes叢集是否已經支援ImageCache。
kubectl get crd/imagecaches.eci.alibabacloud.com
如果返回Error資訊,則表示您的Kubernetes叢集不支援ImageCache,返回樣本如下:
Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "imagecaches.eci.alibabacloud.com" not found
如果您的Kubernetes叢集不支援ImageCache,您需要升級VK(ack-virtual-node組件)到相應支援ImageCache的版本。
說明建議您升級VK到最新版本,以便更好地使用新功能。
關於ack-virtual-node組件的版本資訊,請參見ack-virtual-node。
關於如何升級組件,請參見管理組件。
如果返回imagecaches.eci.alibabacloud.com的資訊,則表示您的Kubernetes叢集已經支援ImageCache,返回樣本如下:
NAME CREATED AT imagecaches.eci.alibabacloud.com 2024-01-23T05:54:44Z
如果您的Kubernetes叢集的ImageCache CRD不是最新的,建議您執行
kubectl apply
命令重新部署。kubectl apply -f imagecache-crd-sample.yaml
ImageCache配置說明
ImageCache的YAML設定檔如下,更多資訊,請參見kubernetes ImageCache API。
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
相關參數說明如下:
名稱 | 類型 | 是否必選 | 描述 |
spec.images | String[] | 是 | 用於建立鏡像緩衝的容器鏡像列表。 |
spec.imagePullSecrets | String[] | 否 | 鏡像倉庫對應的Secret列表。
|
spec.imageCacheSize | int | 否 | 鏡像緩衝大小。預設為20 GiB。取值範圍為20~32768 GiB。 請根據鏡像的大小進行設定,鏡像緩衝的大小需≥鏡像大小*2。 |
spec.retentionDays | int | 否 | 鏡像緩衝保留時間長度,到期會被清理。單位為天。預設永不到期。 |
ImageCache支援添加Annotation來充分使用鏡像緩衝功能,例如在上述YAML樣本中,添加了k8s.aliyun.com/imc-enable-reuse: "true"
的Annotation來開啟鏡像緩衝複用。更多資訊,請參見ImageCache Annotation。
建立ImageCache
建立ImageCache。
kubectl create -f imagecache-test.yaml
imagecache-test.yaml的內容樣本如下:
apiVersion: eci.alibabacloud.com/v1 kind: ImageCache metadata: name: imagecache-sample-test annotations: k8s.aliyun.com/imc-enable-reuse: "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狀態。
kubectl get imagecache imagecache-sample-test
返回結果樣本如下,當狀態為Ready時,表示ImageCache建立完成,可以使用該ImageCache。
NAME AGE CACHEID PHASE PROGRESS imagecache-sample-test 5m30s imc-2ze2kbf9l1onf03z**** Ready 100%
查詢ImageCache
建立ImageCache後,您可以根據需要查詢叢集下所有ImageCache列表或者查看某個ImageCache的詳細資料:
查詢叢集下所有ImageCache列表
kubectl get imagecache
查看某個ImageCache的詳細資料
kubectl get imagecache <imagecache-name> -o yaml
刪除ImageCache
ImageCache對應一份快照。對於手動建立的ImageCache,保留需要支付快照費用,如果不再使用,建議您及時手動刪除。
如果想要刪除某個ImageCache,可執行如下命令:
kubectl delete imagecache <imagecache-name>