在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/imc-cpu-arch | "arm64" | 指定CPU架構。取值範圍:
| |
k8s.aliyun.com/imc-os-type | "windows" | 指定作業系統。取值範圍:
| |
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 Gateway的情況下,可綁定已有的EIP來拉取公網鏡像。 | |
k8s.aliyun.com/auto-create-eip | "true" | 是否自動建立並綁定EIP。在沒有配置NAT Gateway的情況下,可自動建立並綁定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
指定CPU架構
拉取Arm架構的鏡像來建立ImageCache時,需要指定CPU架構。
指定CPU架構為Arm時,請先確保叢集中已有Arm架構的虛擬節點。更多資訊,請參見調度Pod到Arm架構的虛擬節點。
apiVersion: eci.alibabacloud.com/v1
kind: ImageCache
metadata:
name: imagecache-sample
annotations:
k8s.aliyun.com/imc-cpu-arch: "arm64" # 指定CPU架構為Arm
spec:
images:
- arm64v8/centos:7.9.2009 # 使用基於Arm架構的容器鏡像
imageCacheSize:
25
retentionDays:
7
指定作業系統
拉取Windows鏡像來建立ImageCache時,需要指定作業系統。
指定作業系統為Windows時,請先確保叢集中已有Windows虛擬節點。更多資訊,請參見(邀測)調度Pod到Windows虛擬節點。
apiVersion: eci.alibabacloud.com/v1
kind: ImageCache
metadata:
name: imagecache-sample
annotations:
k8s.aliyun.com/imc-os-type: "windows" # 指定作業系統為Windows
spec:
images:
- mcr.microsoft.com/windows/nanoserver:ltsc2022 # 使用Windows容器鏡像
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拉取公網鏡像
Elastic IP Address(EIP)是可以獨立購買和持有的公網IP地址資源,當EIP與雲資源綁定時,雲資源可以通過EIP與公網通訊。更多關於EIP的資訊,請參見Elastic IP Address。
建立ImageCache時,如果您需要從公網拉取鏡像,則需要確保當前網路能夠串連公網。串連公網包括配置NAT Gateway和配置EIP兩種方式。如果您的VPC沒有綁定NAT Gateway,您可以配置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