Secara tradisional, menjalankan kontainer memerlukan pengunduhan dan dekompresi seluruh gambar sebelum startup. Namun, kontainer sering kali hanya membutuhkan sebagian kecil data gambar untuk memulai, sehingga menyebabkan waktu startup yang lama. Fitur pemuatan sesuai permintaan (on-demand loading) dari Container Registry Enterprise Edition mengatasi masalah ini dengan hanya mengunduh dan mendekompresi data gambar yang esensial untuk startup, bukan seluruh gambarnya. Pendekatan ini secara signifikan mempercepat penerapan aplikasi dan meningkatkan elastisitas penskalaan.
Prasyarat
Tersedia kluster ACK yang didukung.
CatatanAnda dapat menggunakan gambar terakselerasi di kluster managed/dedicated ACK versi v1.16.9 atau lebih baru, serta di kluster ACK Edge, kluster ACK Serverless, kluster ACK Lingjun, dan kluster Alibaba Cloud Container Compute Service (ACS) versi v1.26.3 atau lebih baru. Saat membuat kluster, sistem operasi harus berupa Alibaba Cloud Linux 2.1903, Alibaba Cloud Linux 3.2104, edisi ARM 64 bit Alibaba Cloud Linux 3.2104 LTS, Alibaba Cloud Linux UEFI 2.1903, atau CentOS 7.9.
Anda telah membuat instans Container Registry Enterprise Edition. Untuk informasi selengkapnya, lihat Buat instans Container Registry Enterprise Edition.
PentingEdisi instans Container Registry Enterprise Edition yang didukung bervariasi tergantung pada mode akselerasi gambar:
mode lengkap (full mode): Edisi Standard atau Advanced didukung.
mode index-only: Edisi Basic, Standard, atau Advanced didukung.
VPC dari kluster ACK atau kluster ACK Serverless Anda telah dikonfigurasi untuk instans Container Registry Enterprise Edition Anda. Gambar terakselerasi harus digunakan dalam VPC. Untuk informasi selengkapnya, lihat Konfigurasikan kontrol akses untuk VPC.
Informasi latar belakang
Fitur pemuatan sesuai permintaan dari Container Registry Enterprise Edition memungkinkan Anda menggunakan gambar terakselerasi dalam penyebaran Anda. Hal ini menghilangkan kebutuhan untuk mengunduh seluruh gambar dan memungkinkan dekompresi saat dijalankan (on-the-fly), yang secara signifikan meningkatkan efisiensi distribusi aplikasi dan elastisitas penskalaan. Efek akselerasi bergantung pada faktor-faktor seperti ukuran gambar dan kondisi jaringan repositori. Dalam pengujian, sebuah aplikasi yang menggunakan gambar NodeBB berukuran 1,34 GB dari Docker Hub memerlukan waktu 36 detik untuk menarik (pull) gambarnya, dengan total waktu startup 38 detik. Dengan menggunakan gambar terakselerasi, waktu pull berkurang menjadi 4 detik, dan total waktu startup hanya 9 detik.
Batasan
Jika runtime kontainer Anda adalah containerd, repositori gambar terakselerasi dapat menggunakan nama domain kustom. Karena keterbatasan Docker, fitur ini tidak didukung jika Anda menggunakan runtime Docker. Untuk informasi selengkapnya, lihat Gunakan nama domain kustom untuk mengakses instans Container Registry Enterprise Edition.
Mode index-only tidak dapat digunakan dalam skenario Function Compute (FC) atau Serverless App Engine (SAE).
Anda harus mengonversi gambar yang sudah ada menjadi gambar terakselerasi secara manual.
Ketersediaan wilayah
Fitur pemuatan sesuai permintaan tidak tersedia di wilayah Alibaba Finance Cloud dan Alibaba Gov Cloud.
Konversi ke gambar terakselerasi
Anda dapat mengonfigurasi repositori agar secara otomatis mengonversi gambar asli yang didorong (pushed) menjadi gambar terakselerasi. Waktu konversi bervariasi tergantung pada ukuran gambar. Gambar asli tidak terpengaruh.
Gambar terakselerasi menggunakan namespace dan nama repositori yang sama dengan gambar aslinya. Format tag-nya adalah sebagai berikut:
mode index-only: Tag gambar terakselerasi adalah tag gambar asli dengan akhiran
_accelerated. Mode ini hanya didukung oleh runtime containerd. Anda tidak dapat menghapus tag gambar asli selama gambar terakselerasi sedang digunakan.mode lengkap (full mode):
Gambar terakselerasi dengan akhiran
_acceleratedmendukung runtime Docker dan containerd.Gambar terakselerasi dengan akhiran
_containerd_acceleratedhanya untuk runtime containerd.Saat gambar dengan akhiran
_containerd_acceleratedsedang digunakan, Anda tidak dapat menghapus gambar terakselerasi tersebut maupun gambar aslinya.
Masuk ke Konsol Container Registry.
Di bilah navigasi atas, pilih wilayah.
Di panel navigasi kiri, klik Instances.
Di halaman Instances, klik instans Enterprise Edition yang ingin Anda kelola.
Di halaman detail instans, di panel navigasi kiri, pilih .
Di halaman Repositories, klik nama repositori target atau klik Manage di kolom Actions. Di pojok kiri atas halaman Informasi Dasar, klik Edit.
Di kotak dialog Modify Settings, aktifkan Accelerated Image, pilih mode, lalu klik Confirm.
Full Mode: Memberikan akselerasi signifikan untuk startup kontainer. Ukuran gambar terakselerasi yang dihasilkan sekitar 130% dari ukuran gambar aslinya. Diperlukan waktu sekitar 25 detik untuk menghasilkan gambar terakselerasi dari gambar asli berukuran 1 GB. Layer gambar yang sudah ada tidak dibuat ulang.
index-only mode: Memberikan sekitar 70% efek akselerasi dari full mode. Ukuran gambar terakselerasi sekitar 3% dari ukuran gambar aslinya. Diperlukan waktu sekitar 3 detik untuk menghasilkan gambar terakselerasi dari gambar asli berukuran 1 GB. Layer gambar yang sudah memiliki indeks tidak diindeks ulang.
PentingMode index-only sedang dalam pratinjau publik. Kami menyarankan Anda mengujinya di lingkungan non-produksi sebelum menggunakannya di lingkungan produksi.
CatatanMode index-only hanya berlaku untuk gambar yang dikompresi dengan
taratautgz. Mode ini tidak berlaku untuk gambar yang dikompresi dengan metode lain, sepertizstd.Mode index-only harus digunakan bersama gambar aslinya, dan gambar asli tidak dapat dihapus. Di mode lengkap, gambar terakselerasi dapat digunakan secara independen.
Mode index-only tidak didukung oleh runtime Docker.
Setelah Anda mengonfigurasi akselerasi gambar, gambar yang didorong secara otomatis memicu tugas konversi. Jika Anda ingin menerima notifikasi saat konversi gambar selesai, Anda dapat mengonfigurasi notifikasi event. Misalnya, atur ekspresi menjadi
_accelerated$. Untuk informasi selengkapnya, lihat Konfigurasikan notifikasi event.(Opsional) Tentukan Prefetch File List. File dalam daftar ini akan dipra-ambil (prefetched) saat gambar terakselerasi dimulai. Kami menyarankan Anda menggunakan fitur ini ketika file besar perlu dibaca saat startup kontainer.
CatatanSetiap baris harus berisi jalur mutlak ke file. Untuk direktori, jalur harus diakhiri dengan garis miring maju (
/).
Instal komponen akselerasi gambar
Untuk menjalankan kontainer terakselerasi, Anda harus menginstal plugin penyimpanan untuk pemuatan sesuai permintaan pada node pekerja Anda.
Untuk mendukung gambar terakselerasi DADI, instal komponen ack-dadi untuk mengaktifkan akselerasi gambar pada node dalam kelompok node.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Nodes > Node Pools.
Di halaman Node Pools, klik kelompok node target, lalu klik tab Node Components.
Klik Install Node Components, lalu di panel yang muncul di sebelah kanan, pilih komponen ack-dadi dan instal sesuai petunjuk.
Instal komponen akselerasi gambar. (Hanya diperlukan untuk kluster versi sebelum v1.34.)
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, klik Add-ons.
Di halaman Add-ons, temukan aliyun-acr-acceleration-suite di bagian More lalu klik Install.
Di kotak dialog Tips, klik OK.
Di panel navigasi kiri, pilih . Di halaman DaemonSets, lihat detail instalasi DaemonSet komponen.
Di panel navigasi kiri, pilih . Di halaman Deployments, lihat detail instalasi Deployment komponen.
Instalasi komponen selesai ketika semua pod-nya berstatus Berjalan.
-
Aktifkan gambar terakselerasi
Konfigurasikan kredensial akses repositori.
PeringatanKonfigurasikan rahasia pull gambar Anda sesuai prinsip hak istimewa minimal. Berikan hanya izin yang diperlukan untuk menarik gambar layanan yang digunakan oleh kluster. Untuk informasi selengkapnya, lihat Berikan kebijakan kustom kepada Pengguna RAM.
Opsi 1: Gunakan komponen aliyun-acr-credential-helper.
Jika Anda telah menginstal komponen aliyun-acr-credential-helper dan mengonfigurasikannya dengan benar untuk instans Container Registry Enterprise Edition Anda, tidak diperlukan tindakan tambahan.
Jika Anda belum menginstal komponen tersebut, Anda dapat menginstalnya sekarang. Untuk informasi selengkapnya, lihat Gunakan komponen aliyun-acr-credential-helper untuk menarik gambar kontainer tanpa rahasia.
Opsi 2: Tambahkan label ke rahasia pull gambar.
CatatanMetode ini hanya didukung oleh komponen aliyun-acr-acceleration-suite versi 0.2.6 atau lebih baru.
Buat Secret bertipe kubernetes.io/dockerconfigjson dan tambahkan label images.alibabacloud.com/accelerated: true ke Secret tersebut.
kubectl create secret docker-registry <SecretName> --docker-server=<RegistryVpcDomain> --docker-username=<UserName> --docker-password=<Password>kubectl label secrets <SecretName> images.alibabacloud.com/accelerated="true"
Tambahkan label akselerasi gambar.
Anda dapat menambahkan label akselerasi gambar ke beban kerja, seperti Pod atau Deployment, atau ke seluruh namespace di kluster ACK atau kluster ACK Serverless Anda. Saat Anda memberi label pada namespace, pemuatan sesuai permintaan diaktifkan untuk semua beban kerja yang memenuhi syarat dalam namespace tersebut, sehingga tidak perlu memodifikasi file YAML untuk setiap beban kerja. Pilih metode yang paling sesuai dengan kebutuhan Anda.
CatatanKunci label adalah
k8s.aliyun.com/image-accelerate-modedan nilainya adalahon-demand.Tambahkan label akselerasi gambar ke beban kerja.
Contoh berikut menunjukkan cara menambahkan label ke Pod yang dikelola oleh Deployment. Jalankan perintah berikut untuk mengedit Deployment:
kubectl edit deployment <DeploymentName> -n <DeploymentNamespace>Dalam file YAML Deployment, tambahkan label
k8s.aliyun.com/image-accelerate-mode: on-demand.apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx # aktifkan mode on-demand k8s.aliyun.com/image-accelerate-mode: on-demand spec: containers: # gambar instans ACR Anda - image: test-registry-vpc.cn-hangzhou.cr.aliyuncs.com/test/nginx:latest name: test command: ["sleep", "3600"]Tambahkan label akselerasi gambar ke namespace.
Tambahkan label akselerasi gambar di konsol.
Masuk ke Konsol ACK, lalu di bilah navigasi kiri, pilih Clusters.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Namespaces and Quotas.
Di halaman Namespace, temukan namespace target lalu klik Edit di kolom Actions.
Di kotak dialog Edit Namespace, atur Variable Key dari Tag menjadi
k8s.aliyun.com/image-accelerate-modedan Variable Value dari Tag menjadion-demand, lalu klik Confirm.
Tambahkan label akselerasi gambar menggunakan command line.
kubectl label namespaces <YOUR-NAMESPACE> k8s.aliyun.com/image-accelerate-mode=on-demandSetelah Anda menambahkan label akselerasi dan mengonversi gambar asli menjadi gambar terakselerasi, komponen akselerasi secara otomatis mengganti alamat gambar asli dengan alamat gambar terakselerasi dan menambahkan nodeSelector untuk menjadwalkan Pod ke node terakselerasi selama pembuatan atau pembaruan Pod dalam namespace tersebut.