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 hal ini dengan hanya mengunduh dan mendekompresi data gambar yang esensial untuk startup, bukan seluruh gambarnya. Metode 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 1.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 1.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 berdasarkan 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 penerapan Anda. Hal ini menghilangkan kebutuhan untuk mengunduh seluruh gambar dan memungkinkan dekompresi secara langsung (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, 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 ukuran gambar. Gambar asli tidak terpengaruh.
Gambar terakselerasi menggunakan namespace dan nama repositori yang sama dengan gambar aslinya. Format tag-nya 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.
Pada 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.
Catatan-
Mode 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 mandiri.
-
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.
-
Kluster managed dan dedicated ACK
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, perluas Advanced Options dan aktifkan Container Image Acceleration.
Aktifkan untuk kelompok node yang sudah ada
PentingPerubahan 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 ke node yang sudah ada, hapus dan tambahkan kembali node tersebut. Lihat Hapus node dan Tambahkan node yang sudah ada.
-
Masuk ke Konsol ACK dan 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 instruksi di layar untuk memperbarui ConfigMap kelompok node. Kolom Status menampilkan Updating selama pembaruan berlangsung, dan Active saat selesai.
Jenis kluster lainnya
Anda perlu menambahkan label akselerasi gambar
alibabacloud.com/image-accelerate-enabled: trueke node. Tindakan ini secara otomatis mengaktifkan fitur akselerasi gambar dan menginstal plugin penyimpanan gambar selama inisialisasi node.Metode penambahan label bervariasi tergantung jenis kluster:
Jenis kluster
Panduan konfigurasi
ACK Serverless cluster
ACK Edge cluster
-
Untuk kelompok node sisi cloud, lihat Buat dan kelola kelompok node.
-
Untuk kelompok node edge, lihat Buat kelompok node edge.
ACK Lingjun cluster
Alibaba Cloud Container Compute Service (ACS)
-
-
Instal komponen akselerasi gambar.
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 dan 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 secret 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 mengonfigurasinya 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 secret.
-
-
Opsi 2: Tambahkan label ke secret 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 (workload), 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 Anda tidak perlu mengubah 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>Di 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, dan 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 dan klik Edit di kolom Actions.
-
Di kotak dialog Edit the 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.
-