Gambar kontainer disimpan sebagai lapisan terkompresi. Saat sebuah kontainer dimulai, runtime mengunduh dan mendekompresi setiap lapisan sebelum kontainer dapat berjalan — meskipun dalam sebagian besar skenario bisnis, runtime kontainer hanya perlu membaca sebagian kecil data dari gambar tersebut. Untuk gambar berukuran besar, pengunduhan yang tidak perlu ini mendominasi waktu startup.
ACK mendukung pemuatan gambar kontainer secara on-demand menggunakan Data Accelerator for Disaggregated Infrastructure (DADI). Alih-alih menarik seluruh gambar di awal, DADI hanya memuat data yang benar-benar dibutuhkan oleh kontainer dan mendekompresinya secara langsung (on the fly).
Untuk gambar NodeBB berukuran 1,34 GB dari Docker Hub, pemuatan on-demand mengurangi fase penarikan gambar dari 36 detik menjadi 4 detik serta waktu startup aplikasi total dari 38 detik menjadi 9 detik.
Waktu penarikan gambar di atas hanya untuk referensi. Performa aktual bergantung pada ukuran gambar dan kondisi jaringan.
Batasan
| Constraint | Requirement |
|---|---|
| Jenis kluster | Hanya kluster ACK yang dikelola. |
| Versi kluster | 1.26 atau lebih baru. Lihat Tingkatkan kluster secara manual. |
| waktu proses Node | containerd 1.6.34 atau lebih baru. Lihat Perbarui kelompok node. |
| Mode DADI | Hanya mode Full. Mode Index-only tidak didukung. |
Perilaku penting — mengaktifkan atau menonaktifkan Container Image Acceleration pada kelompok node hanya memengaruhi node yang ditambahkan setelahnya. Untuk menerapkan perubahan pada node yang sudah ada, hapus node tersebut dari kelompok node lalu tambahkan kembali. Lihat Hapus node dan Tambahkan node yang sudah ada.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Kluster ACK yang dikelola yang menjalankan Kubernetes 1.26 atau lebih baru dengan containerd 1.6.34 atau lebih baru sebagai runtime node
-
Akses ke repositori gambar — baik ACR Edisi Perusahaan (Standard atau Premium) maupun registri yang dikelola sendiri
-
Akses
kubectlke kluster
Langkah 1: Dapatkan gambar terakselerasi
Gambar terakselerasi menggunakan format DADI. Konversi gambar yang sudah ada menggunakan fitur konversi bawaan ACR Edisi Perusahaan (disarankan) atau alat open source DADI.
Opsi 1: Gunakan ACR Edisi Perusahaan (disarankan)
ACR Edisi Perusahaan (Standard atau Premium) mengonversi gambar secara otomatis di tingkat repositori. Saat Anda mendorong (push) gambar, ACR membuat salinan terakselerasi tanpa mengubah gambar aslinya. Gambar terakselerasi menggunakan namespace dan nama repositori yang sama, dengan akhiran _accelerated pada tag-nya (misalnya, latest menjadi latest_accelerated).
Untuk informasi lebih lanjut dan batasan, lihat Pemuatan gambar kontainer on-demand.
-
Masuk ke Konsol Container Registry dan pilih wilayah.
-
Di panel navigasi kiri, klik Instances. Di halaman Instances, klik nama instans Edisi Perusahaan.
-
Di panel navigasi kiri, pilih Repository > Repositories.
-
Klik nama repositori. Di halaman Details, klik Edit di pojok kiri atas.
-
Di kotak dialog Modify Settings, aktifkan Accelerated Image, pilih Full Mode, lalu klik Confirm. Gambar yang didorong setelah perubahan ini secara otomatis memicu tugas konversi. Untuk menerima notifikasi saat konversi selesai, konfigurasikan notifikasi event dengan ekspresi
_accelerated$. Lihat Event Notifications.
Opsi 2: Gunakan tool DADI open source
Gunakan konverter gambar DADI untuk mengonversi gambar secara manual.
-
Instal overlaybd snapshotter.
# Unduh paket sesuai arsitektur instans Anda. wget https://github.com/containerd/accelerated-container-image/releases/download/v1.2.3/overlaybd-snapshotter-1.2.3-20241016090917.0c2f057.x86_64.rpm rpm -ivh overlaybd-snapshotter-1.2.3-20241016090917.0c2f057.x86_64.rpm -
Instal lapisan perangkat blok overlaybd.
# Unduh paket sesuai arsitektur instans Anda. wget https://github.com/containerd/overlaybd/releases/download/v1.0.13/overlaybd-1.0.13-20240821.a117098.el8.x86_64.rpm rpm -ivh overlaybd-1.0.13-20240821.a117098.el8.x86_64.rpm -
Konversi gambar tersebut. Contoh berikut mengonversi gambar di repositori ACR. Untuk registri yang dikelola sendiri, sesuaikan alamat gambar dan kredensialnya.
Placeholder Description user:passwordKredensial registri xxxxx-registry.cn-hangzhou.cr.aliyuncs.com/default/redisAlamat repository gambar sumber latestTag gambar sumber ( -i)latest_obd_newTag gambar output ( -o)/opt/overlaybd/snapshotter/convertor \ -u user:password \ -r xxxxx-registry.cn-hangzhou.cr.aliyuncs.com/default/redis \ -i latest \ -o latest_obd_newGanti placeholder berikut:
Langkah 2: Aktifkan Container Image Acceleration pada kelompok node
Baik kelompok node baru maupun yang sudah ada mendukung Container Image Acceleration. Langkah-langkahnya sedikit berbeda.
Aktifkan untuk kelompok node baru
-
Masuk ke Konsol ACK dan klik Clusters di panel navigasi kiri.
-
Klik nama kluster. Di panel navigasi kiri, pilih Nodes > Node Pools.
-
Saat membuat kelompok node, buka Advanced Options dan aktifkan Container Image Acceleration.
Aktifkan untuk kelompok node yang sudah ada
Perubahan pada Container Image Acceleration hanya berlaku untuk node yang ditambahkan ke kelompok setelah perubahan dilakukan. Node yang sudah ada tidak terpengaruh — untuk menerapkan fitur ini pada node yang sudah ada, hapus lalu tambahkan kembali node tersebut. Lihat Hapus node dan Tambahkan node yang sudah ada.
-
Masuk ke konsol ACK, lalu klik Clusters di panel navigasi kiri.
-
Klik nama kluster. Di panel navigasi kiri, pilih Nodes > Node Pools.
-
Temukan kelompok node dan klik Edit di kolom Actions. Di bagian Advanced Options, aktifkan Container Image Acceleration dan ikuti petunjuk di layar untuk memperbarui ConfigMap kelompok node. Kolom Status akan menampilkan Updating selama pembaruan berlangsung, dan Active saat selesai.
Langkah 3: Sebarkan aplikasi dengan gambar terakselerasi
Konfigurasikan kredensial penarikan gambar
Instal komponen aliyun-acr-acceleration-suite agar DADI dapat melakukan autentikasi dengan registri gambar saat memuat data gambar secara on-demand.
-
Masuk ke Konsol ACK dan klik Clusters di panel navigasi kiri.
-
Klik nama kluster. Di panel navigasi kiri, klik Add-ons.
-
Di halaman Add-ons, temukan aliyun-acr-acceleration-suite di tab Others dan klik Install.
Setelah instalasi, konfigurasikan kredensial penarikan berdasarkan jenis registri Anda:
ACR Edisi Perusahaan: Instal plugin bebas password untuk secara otomatis menyuntikkan kredensial akses ke workload yang memenuhi syarat. Hal ini menghilangkan kebutuhan manajemen Secret secara manual. Lihat Tarik gambar ACR tanpa secret.
Registri yang dikelola sendiri: Buat Secret bertipe kubernetes.io/dockerconfigjson, lalu beri label agar suite akselerasi dapat menggunakannya.
# Buat Secret.
kubectl create secret docker-registry <SecretName> \
--docker-server=<RegistryVpcDomain> \
--docker-username=<UserName> \
--docker-password=<Password>
# Beri label Secret untuk DADI.
kubectl label secrets <SecretName> images.alibabacloud.com/accelerated="true"
Jika aplikasi Anda tidak perlu menggunakan secret untuk menarik gambar privat, Anda dapat melewati langkah ini.
Buat aplikasi
Gunakan node selector untuk menjadwalkan Pod ke node yang telah diaktifkan akselerasi gambarnya. Label alibabacloud.com/image-accelerate-enabled: "true" secara otomatis diterapkan pada node yang diaktifkan akselerasi.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
nodeSelector:
alibabacloud.com/image-accelerate-enabled: "true" # Jadwalkan hanya ke node yang diaktifkan akselerasi.
containers:
- name: test
image: xxxxx-registry.cn-hangzhou.cr.aliyuncs.com/default/redis:latest_obd_new # Ganti dengan alamat gambar terakselerasi Anda.
command: ["sleep", "3600"]
Terapkan manifes:
kubectl apply -f deployment.yaml
Langkah selanjutnya
-
Untuk mempercepat inisialisasi workload dan node menggunakan snapshot data disk, lihat Gunakan snapshot data disk untuk mempercepat startup aplikasi model besar.