使用ImageCache加速創(chuàng)建Pod
阿里云以ImageCache CRD的方式將ECI的鏡像緩存功能提供給Kubernetes用戶,以便Kubernetes用戶也可以使用該功能來加速創(chuàng)建Pod。本文介紹如何使用ImageCache加速創(chuàng)建Pod。
配置說明
ImageCache(即鏡像緩存)是Cluster級別的資源,因此在不同的namespace下創(chuàng)建Pod時均可以使用ImageCache來實現(xiàn)加速創(chuàng)建Pod。
使用ImageCache創(chuàng)建Pod包括自動匹配和明確指定兩種方式。您可以在Pod級別的metadata中添加Annotation來配置。相關Annotation如下:
建議使用自動匹配方式。如果同時設置了兩種方式,則明確指定方式的優(yōu)先級高于自動匹配方式。更多信息,請參見鏡像緩存概述。
使用自動匹配方式時,如果您的業(yè)務場景希望在完全匹配的情況下才使用ImageCache,可以設置
imc-perfect-match
或imc-match-count-request
。此時,建議使用imc-perfect-match
;如果同時設置兩者,imc-perfect-match
的優(yōu)先級更高。
使用方式 | 配置項 | 示例值 | 說明 |
自動匹配 | k8s.aliyun.com/eci-auto-imc | "true" | 是否自動匹配ImageCache,默認為true,表示系統(tǒng)會根據(jù)匹配策略自動匹配最優(yōu)的ImageCache創(chuàng)建Pod。匹配策略的優(yōu)先級從高到低依次為:鏡像匹配度、匹配的鏡像大小、創(chuàng)建時間。 如果沒有完全匹配,系統(tǒng)會在創(chuàng)建Pod的同時自動創(chuàng)建對應的ImageCache。 |
k8s.aliyun.com/imc-perfect-match | "true" | Pod內所有容器鏡像是否均要完全匹配ImageCache。默認為false。 | |
k8s.aliyun.com/imc-match-count-request | "2" | Pod內要完全匹配ImageCache的容器鏡像個數(shù)。 | |
明確指定 | k8s.aliyun.com/eci-imc-id | imc-2zebxkiifuyzzlhl**** | 明確指定使用某個ImageCache創(chuàng)建Pod。 |
Annotation請?zhí)砑釉赑od的metadata下,例如:創(chuàng)建Deployment時,Annotation需添加在spec>template>metadata下。
僅支持在創(chuàng)建ECI Pod時添加ECI相關Annotation來生效ECI功能,更新ECI Pod時添加或者修改ECI相關Annotation均不會生效。
配置示例
使用ImageCache創(chuàng)建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的狀態(tài)為Ready,其它狀態(tài)的ImageCache會導致Pod創(chuàng)建失敗。
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