在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前加上所屬地域,例如 | |
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網關的情況下,可綁定已有的EIP來拉取公網鏡像。 | |
k8s.aliyun.com/auto-create-eip | "true" | 是否自動創建并綁定EIP。在沒有配置NAT網關的情況下,可自動創建并綁定EIP來拉取公網鏡像。 | |
k8s.aliyun.com/eip-bandwidth | "5" | 自動創建EIP時,指定EIP帶寬。單位為Mbps。 | |
k8s.aliyun.com/eip-internet-charge-type | PayByBandwidth | 自動創建EIP時,指定EIP的計量方式。取值范圍:
| |
k8s.aliyun.com/eip-isp | BGP | 自動創建EIP時,指定EIP線路類型。僅按量付費的EIP支持指定。取值范圍:
| |
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
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
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
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
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
配置EIP拉取公網鏡像
彈性公網IP(EIP)是可以獨立購買和持有的公網IP地址資源,當EIP與云資源綁定時,云資源可以通過EIP與公網通信。更多關于EIP的信息,請參見彈性公網IP。
創建ImageCache時,如果您需要從公網拉取鏡像,則需要確保當前網絡能夠連接公網。連接公網包括配置NAT網關和配置EIP兩種方式。如果您的VPC沒有綁定NAT網關,您可以配置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 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 imageCacheSize: 25 retentionDays: 7