Sebelum ECI dijalankan, ECI harus menarik gambar kontainer yang diperlukan. Proses menarik gambar ini merupakan penyebab utama keterlambatan saat startup pod. ImageCache membuat snapshot cache dari gambar kontainer terlebih dahulu sehingga pembuatan pod berikutnya dapat menggunakan kembali cache tersebut untuk memangkas waktu startup pod pada node virtual.
Waktu yang sebenarnya dihemat bervariasi tergantung pada jumlah gambar, ukuran, dan kondisi jaringan.
Penagihan
Pembuatan dan penggunaan image cache dapat dikenai biaya. Lihat Penagihan image cache.
Prasyarat
Pastikan Anda memiliki:
-
Kluster ACK dengan node virtual yang diaktifkan
-
Akses
kubectlke kluster
Langkah 1: Aktifkan dukungan ImageCache
Periksa apakah kluster Anda mendukung ImageCache:
kubectl get crd/imagecaches.eci.alibabacloud.com
-
Jika informasi tentang
imagecaches.eci.alibabacloud.comdikembalikan, berarti ImageCache didukung. Lanjutkan ke Langkah 2. -
Jika muncul error, perbarui ACK Virtual Node ke versi terbaru.
Langkah 2: Buat image cache
Gunakan pembuatan otomatis kecuali jika Anda memerlukan kecepatan maksimum untuk pod pertama.
| Metode | Kapan digunakan | Cara kerja |
|---|---|---|
| Otomatis | Sebagian besar kasus — menghemat biaya | Jika tidak ada cache yang sesuai, sistem akan membuatnya selama pembuatan pod. Pod berikutnya dengan gambar yang sama akan menggunakan kembali cache tersebut. |
| Manual | Pembuatan pertama kali yang memerlukan kecepatan maksimum | Buat image cache terlebih dahulu menggunakan templat YAML, lalu rujuk cache tersebut saat membuat pod. |
Untuk pembuatan manual, lihat Kelola ImageCache dan Anotasi image cache. Bandingkan metode dalam Metode pembuatan image cache.
Langkah 3: Gunakan image cache untuk membuat pod
Tambahkan anotasi ke bagian metadata spesifikasi pod Anda (atau spec.template.metadata dalam Penyebaran) untuk memilih image cache.
Anotasi hanya berlaku saat pembuatan pod. Mengubah anotasi pada pod yang sudah ada tidak akan berpengaruh.
Referensi anotasi
ImageCache adalah resource tingkat kluster yang dapat digunakan lintas namespace.
-
Pencocokan gambar: Gunakan referensi gambar yang sama dalam spesifikasi pod seperti yang digunakan dalam ImageCache untuk memaksimalkan tingkat kecocokan.
-
Kebijakan tarik: Atur
imagePullPolicykeIfNotPresentagar lapisan cache tidak diunduh ulang.
| Anotasi | Nilai contoh | Bawaan | Deskripsi |
|---|---|---|---|
k8s.aliyun.com/eci-auto-imc |
"true" |
true |
Mengaktifkan pencocokan image cache otomatis. Memilih kecocokan terbaik berdasarkan tingkat kecocokan gambar, ukuran, dan waktu pembuatan. Membuat cache baru jika tidak ada kecocokan. |
k8s.aliyun.com/imc-perfect-match |
"true" |
false |
Mengharuskan semua gambar pod cocok sepenuhnya dengan image cache. Memiliki prioritas lebih tinggi daripada imc-match-count-request. |
k8s.aliyun.com/imc-match-count-request |
"2" |
— | Jumlah gambar pod yang harus cocok dengan image cache. |
k8s.aliyun.com/eci-imc-id |
imc-2zebxkiifuyzzlhl**** |
— | Mengaitkan pod ke image cache tertentu berdasarkan ID. Memiliki prioritas lebih tinggi daripada pencocokan otomatis. |
Prioritas anotasi: Jika imc-perfect-match dan imc-match-count-request keduanya ditetapkan, imc-perfect-match memiliki prioritas lebih tinggi. Saat eci-imc-id ditentukan, anotasi ini menggantikan pencocokan otomatis.
Cocokkan image cache secara otomatis (disarankan)
Aktifkan eci-auto-imc dan tambahkan imc-perfect-match secara opsional untuk pencocokan yang lebih ketat:
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" # Mengaktifkan pencocokan image cache otomatis
k8s.aliyun.com/imc-perfect-match: "true" # Semua gambar dalam pod harus cocok sepenuhnya dengan cache
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
Tentukan image cache
Image cache yang ditentukan harus berada dalam kondisi Ready. Jika tidak, pembuatan pod akan gagal.
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**** # Mengaitkan ke image cache tertentu
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
imagePullPolicy: IfNotPresent
Terapkan anotasi secara massal
Gunakan fitur Elastic Container Instance Effect dalam eci-profile untuk menerapkan anotasi ImageCache ke semua pod yang sesuai. Lihat Konfigurasikan eci-profile untuk secara otomatis menggunakan fitur ImageCache.