Alibaba Cloud menyediakan fitur cache gambar untuk Elastic Container Instance melalui CustomResourceDefinition (CRD) ImageCache. Fitur ini mengurangi waktu yang diperlukan untuk menarik gambar kontainer dari repositori jarak jauh setiap kali contoh kontainer elastis dibuat di kluster Kubernetes. Topik ini menjelaskan cara membuat dan menggunakan ImageCache untuk mempercepat pembuatan contoh kontainer elastis.
Apa itu ImageCache
ImageCache adalah sumber daya yang didefinisikan oleh Elastic Container Instance untuk menyimpan lapisan gambar kontainer guna mempercepat pembuatan instans. Setiap ImageCache sesuai dengan satu cache gambar. Saat membuat contoh kontainer elastis, alih-alih mengunduh semua lapisan gambar, ImageCache memungkinkan instans menggunakan lapisan yang telah dicache sebelumnya. Hal ini mengurangi waktu mulai kontainer, terutama untuk gambar besar atau dalam kondisi jaringan yang tidak stabil. Untuk informasi lebih lanjut, lihat Ikhtisar Cache Gambar.
Penghematan waktu bergantung pada ukuran gambar, jumlah lapisan, dan kondisi jaringan.
Tagihan
Biaya dapat berlaku selama pembuatan dan penggunaan ImageCache. Untuk informasi lebih lanjut, lihat Penagihan Cache Gambar.
Prosedur
Langkah 1: Terapkan CRD ImageCache
Jalankan perintah berikut untuk memeriksa apakah kluster Anda mendukung ImageCache:
kubectl get crd/imagecaches.eci.alibabacloud.comJika informasi tentang
imagecaches.eci.alibabacloud.comditampilkan, kluster Anda mendukung ImageCache.Jika pesan kesalahan muncul, perbarui komponen ACK Virtual Node ke versi terbaru untuk mengaktifkan ImageCache.
Langkah 2: Buat ImageCache
Anda dapat membuat ImageCache dengan dua cara: otomatis atau manual. Untuk efisiensi biaya, disarankan menggunakan pembuatan ImageCache otomatis, kecuali jika Anda memerlukan percepatan segera untuk instance Elastic Container Instance baru. Untuk informasi lebih lanjut mengenai perbedaan antara ImageCache yang dibuat secara manual dan otomatis, lihat Metode untuk membuat cache gambar.
Metode | Deskripsi |
Pembuatan otomatis | Anda dapat mengaktifkan pencocokan otomatis ImageCache saat membuat contoh kontainer elastis. Kemudian, jika tidak ada ImageCache yang cocok, sistem akan secara otomatis membuat ImageCache saat sistem membuat contoh kontainer elastis. Cache ini kemudian dapat digunakan untuk mempercepat pembuatan contoh kontainer elastis di masa depan dengan gambar yang sama. |
Pembuatan manual | Jika Anda membuat contoh kontainer elastis untuk pertama kalinya dan Anda ingin pembuatan menjadi secepat mungkin, Anda dapat membuat ImageCache secara manual terlebih dahulu dengan menggunakan template YAML. Untuk informasi lebih lanjut, lihat Kelola ImageCache dan Anotasi cache gambar. |
Untuk menghemat biaya, gunakan ImageCache otomatis kecuali untuk akselerasi selama pembuatan pertama kali.
Untuk informasi lebih lanjut tentang perbedaan antara metode pembuatan otomatis dan manual, lihat Metode untuk Membuat ImageCache.
Langkah 3: Gunakan ImageCache untuk membuat contoh kontainer elastis
Saat Anda membuat instance kontainer elastis dari ImageCache, Anda dapat secara otomatis mencocokkan sebuah ImageCache atau secara manual menentukan satu.
Kami menyarankan Anda untuk mengaktifkan pencocokan otomatis dan mengonfigurasi parameter imc-perfect-match guna mendapatkan pencocokan yang lebih ketat. Jika baik imc-perfect-match maupun imc-match-count-request dikonfigurasi, maka yang pertama akan diutamakan. Apabila baik pencocokan otomatis maupun penentuan manual dikonfigurasi, yang terakhir akan diutamakan. Untuk informasi lebih lanjut, lihat Ikhtisar cache gambar.
Tabel berikut menjelaskan anotasi utama yang digunakan:
Metode pencocokan | Anotasi | Contoh | Deskripsi |
Pencocokan otomatis | k8s.aliyun.com/eci-auto-imc | "true" | Menentukan apakah akan secara otomatis mencocokkan cache gambar. Nilai default adalah true, yang menunjukkan bahwa sistem secara otomatis mencocokkan ImageCache yang paling sesuai untuk membuat contoh kontainer elastis berdasarkan kebijakan pencocokan. Sistem memilih ImageCache berdasarkan urutan berikut: tingkat kecocokan gambar, ukuran gambar, dan waktu pembuatan gambar. Jika tidak ada ImageCache yang cocok persis, sistem secara otomatis membuatnya saat sistem membuat contoh kontainer elastis. |
k8s.aliyun.com/imc-perfect-match | "true" | Menentukan apakah semua gambar kontainer dalam pod harus sepenuhnya cocok dengan ImageCache. Nilai default: false. | |
k8s.aliyun.com/imc-match-count-request | "2" | Menentukan jumlah gambar kontainer dalam pod yang harus persis cocok dengan ImageCache. | |
Penentuan manual | k8s.aliyun.com/eci-imc-id | imc-2zebxkiifuyzzlhl**** | Menentukan cache gambar untuk membuat pod. |
Konfigurasi contoh
ImageCache merupakan sumber daya tingkat kluster yang dapat digunakan di berbagai namespace.
Anotasi harus ditambahkan ke bagian
metadatadalam file konfigurasi pod. Sebagai contoh, dalam Deployment, tambahkan anotasi di bawahspec.template.metadata.Anotasi hanya berlaku saat membuat contoh kontainer elastis. Menambahkan atau memodifikasi anotasi untuk contoh yang sudah ada tidak akan berpengaruh.
Fitur Elastic Container Instance Effect dalam eci-profile secara dinamis menambahkan anotasi terkait ImageCache ke pod berdasarkan kondisi tertentu. Jika anotasi tidak ada dalam file YAML pod, Anda dapat mengonfigurasi eci-profile, dan sistem akan menerapkannya secara otomatis tanpa pembaruan manual. Untuk informasi lebih lanjut, lihat Konfigurasikan eci-profile untuk Menggunakan Fitur ImageCache Secara Otomatis.
Pencocokan Gambar: Tentukan gambar dalam cache untuk meningkatkan tingkat kecocokan dan memanfaatkan sepenuhnya caching.
Kebijakan Penarikan: Atur
ImagePullPolicykeIfNotPresentuntuk menghindari unduhan berulang lapisan gambar.
Cocokkan ImageCache secara otomatis
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 otomatis cache gambar
k8s.aliyun.com/imc-perfect-match: "true" # Menentukan bahwa semua gambar kontainer dalam pod harus cocok dengan cache gambar.
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: IfNotPresentTentukan ImageCache
Pastikan bahwa cache gambar yang ditentukan berada dalam status Ready. Jika tidak, pod gagal dibuat.
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**** # Menentukan cache gambar.
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
imagePullPolicy: IfNotPresent