管理ImageCache
阿里云以ImageCache CRD的方式將ECI的鏡像緩存功能提供給Kubernetes用戶,以便Kubernetes用戶也可以使用該功能來(lái)加速創(chuàng)建ECI Pod。本文介紹ImageCache資源,以及如何創(chuàng)建、查詢和刪除ImageCache。
準(zhǔn)備工作
登錄Kubernetes集群,執(zhí)行以下命令,驗(yàn)證您的Kubernetes集群是否已經(jīng)支持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,您需要升級(jí)VK(ack-virtual-node組件)到相應(yīng)支持ImageCache的版本。
說(shuō)明建議您升級(jí)VK到最新版本,以便更好地使用新功能。
關(guān)于ack-virtual-node組件的版本信息,請(qǐng)參見(jiàn)ack-virtual-node。
關(guān)于如何升級(jí)組件,請(qǐng)參見(jiàn)管理組件。
如果返回imagecaches.eci.alibabacloud.com的信息,則表示您的Kubernetes集群已經(jīng)支持ImageCache,返回示例如下:
NAME CREATED AT imagecaches.eci.alibabacloud.com 2024-01-23T05:54:44Z
如果您的Kubernetes集群的ImageCache CRD不是最新的,建議您執(zhí)行
kubectl apply
命令重新部署。kubectl apply -f imagecache-crd-sample.yaml
ImageCache配置說(shuō)明
ImageCache的YAML配置文件如下,更多信息,請(qǐng)參見(jiàn)kubernetes ImageCache API。
apiVersion: eci.alibabacloud.com/v1
kind: ImageCache
metadata:
name: imagecache-sample
annotations:
k8s.aliyun.com/imc-enable-reuse: "true" #開(kāi)啟鏡像緩存復(fù)用
spec:
images:
- centos:latest
- busybox:latest
imagePullSecrets:
- default:secret1
- default:secret2
- kube-system:secret3
imageCacheSize:
25
retentionDays:
7
相關(guān)參數(shù)說(shuō)明如下:
名稱 | 類(lèi)型 | 是否必選 | 描述 |
spec.images | String[] | 是 | 用于創(chuàng)建鏡像緩存的容器鏡像列表。 |
spec.imagePullSecrets | String[] | 否 | 鏡像倉(cāng)庫(kù)對(duì)應(yīng)的Secret列表。
|
spec.imageCacheSize | int | 否 | 鏡像緩存大小。默認(rèn)為20 GiB。取值范圍為20~32768 GiB。 請(qǐng)根據(jù)鏡像的大小進(jìn)行設(shè)置,鏡像緩存的大小需≥鏡像大小*2。 |
spec.retentionDays | int | 否 | 鏡像緩存保留時(shí)長(zhǎng),過(guò)期會(huì)被清理。單位為天。默認(rèn)永不過(guò)期。 |
ImageCache支持添加Annotation來(lái)充分使用鏡像緩存功能,例如在上述YAML示例中,添加了k8s.aliyun.com/imc-enable-reuse: "true"
的Annotation來(lái)開(kāi)啟鏡像緩存復(fù)用。更多信息,請(qǐng)參見(jiàn)ImageCache Annotation。
創(chuàng)建ImageCache
創(chuàng)建ImageCache。
kubectl create -f imagecache-test.yaml
imagecache-test.yaml的內(nèi)容示例如下:
apiVersion: eci.alibabacloud.com/v1 kind: ImageCache metadata: name: imagecache-sample-test annotations: k8s.aliyun.com/imc-enable-reuse: "true" #開(kāi)啟鏡像緩存復(fù)用 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狀態(tài)。
kubectl get imagecache imagecache-sample-test
返回結(jié)果示例如下,當(dāng)狀態(tài)為Ready時(shí),表示ImageCache創(chuàng)建完成,可以使用該ImageCache。
NAME AGE CACHEID PHASE PROGRESS imagecache-sample-test 5m30s imc-2ze2kbf9l1onf03z**** Ready 100%
查詢ImageCache
創(chuàng)建ImageCache后,您可以根據(jù)需要查詢集群下所有ImageCache列表或者查看某個(gè)ImageCache的詳細(xì)信息:
查詢集群下所有ImageCache列表
kubectl get imagecache
查看某個(gè)ImageCache的詳細(xì)信息
kubectl get imagecache <imagecache-name> -o yaml
刪除ImageCache
ImageCache對(duì)應(yīng)一份快照。對(duì)于手動(dòng)創(chuàng)建的ImageCache,保留需要支付快照費(fèi)用,如果不再使用,建議您及時(shí)手動(dòng)刪除。
如果想要?jiǎng)h除某個(gè)ImageCache,可執(zhí)行如下命令:
kubectl delete imagecache <imagecache-name>