Kelompok node ACK memungkinkan Anda mengonfigurasi disk data untuk node baru dan menginisialisasi disk tersebut dari Snapshot disk data yang sudah ada. Snapshot tersebut dapat berisi semua data cache yang diperlukan, seperti gambar kontainer yang telah diunduh sebelumnya, model pembelajaran mesin skala besar yang telah dilatih sebelumnya, citra sistem yang dibutuhkan, serta sumber daya statis kritis lainnya. Saat node baru bergabung ke kelompok node, data cache tersebut secara otomatis dipulihkan dari Snapshot, sehingga secara signifikan mengurangi waktu pemuatan data pada eksekusi pertama. Topik ini menjelaskan dua skenario yang menunjukkan cara menggunakan Snapshot disk data untuk mempercepat penerapan beban kerja dan inisialisasi node.
Skenario 1: Mempercepat startup aplikasi
Skenario ini menggunakan beban kerja aplikasi model besar Qwen-7B sebagai contoh. Skenario ini menunjukkan cara menggunakan Instance ECS untuk memuat terlebih dahulu gambar kontainer ac2/qwen ke disk data, menyimpannya dalam cache, lalu membuat Snapshot. Anda kemudian dapat menggunakan Snapshot ini sebagai disk data untuk node baru dalam kelompok node. Saat Anda menjadwalkan beban kerja ke node-node baru tersebut, aplikasi akan dimulai lebih cepat.
Mempercepat startup aplikasi menggunakan Snapshot disk data
Langkah 1: Buat Instance ECS dengan disk data
Buat Instance ECS yang menyertakan disk data untuk membuat Snapshot disk data. Untuk informasi selengkapnya, lihat Buat instance menggunakan wizard.
Tentukan ukuran disk data yang mencukupi untuk memastikan tersedianya ruang yang cukup.
Setelah instance dibuat, masuk ke Instance ECS dan jalankan perintah berikut untuk melihat informasi disk.
fdisk -lOutput yang diharapkan:
Disk /dev/vda: 40 GiB, 42949672960 bytes, 83886080 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: F51132A7-67B1-4650-806D-FD0DExxxxxxx Device Start End Sectors Size Type /dev/vda1 2048 6143 4096 2M BIOS boot /dev/vda2 6144 415743 409600 200M EFI System /dev/vda3 415744 83886046 83470303 39.8G Linux filesystem Disk /dev/vdb: 40 GiB, 42949672960 bytes, 83886080 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytesOutput menunjukkan bahwa perangkat blok /dev/vdb telah disambungkan ke Instance ECS tetapi belum dipasang ke direktori host mana pun.
Jalankan perintah berikut untuk menginisialisasi sistem file disk data dan memasang disk data ke direktori host. Topik ini menggunakan direktori
/mnt/examplesebagai contoh.mkdir -p /mnt/example mkfs.ext4 /dev/vdb mount /dev/vdb /mnt/example
Langkah 2: Instal runtime
Periksa versi runtime yang diperlukan. Versi tersebut harus sama dengan versi runtime pada node kluster yang akan menggunakan Snapshot.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang ingin dikelola lalu klik namanya. Di panel navigasi kiri, pilih .
Klik kelompok node target. Pada tab Basic Information, lihat Container Runtime. Topik ini menggunakan containerd 1.6.36 sebagai contoh.
Pada Instance ECS, jalankan perintah berikut untuk mengikat dan memasang subdirektori.
mkdir -p /var/lib/containerd mkdir -p /mnt/example/containerd/ mount --bind /mnt/example/containerd/ /var/lib/containerdInstal runtime containerd 1.6.36. Untuk informasi selengkapnya, lihat Getting started with containerd.
Langkah 3: Unduh gambar kontainer dan buat Snapshot
Pada Instance ECS, jalankan perintah berikut untuk menarik gambar yang diperlukan.
ctr -n k8s.io images pull ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/qwen:7b-pytorch2.2.0.1-alinux3.2304Output yang diharapkan:
ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/qwen:7b-pytorch2.2.0.1-alinux3.2304: resolved |++++++++++++++++++++++++++++++++++++++| index-sha256:26f7ec425ca145b75edea364a51aa295587ddd5d65ac204e4e6da0e51bddb357: done |++++++++++++++++++++++++++++++++++++++| manifest-sha256:f6d5fb3791e6b6a3213b44ede5bec8e4a3b7fbd4ff4ba22ace00a10b83a4982a: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:bf2e4c7c66fc8341e90fb1a2f5f19c3b76b692054d54c42095d5fb9b18c1fac8: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:fec856349732affc95608fc6e36d9c9cb50247901696df2046a781a3969e5360: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:ed96823de6cfad0ef1b9de97e427f41160817c98e9bebf90ba8cc37992eabc96: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:9df511db38b7e057b13fa70a4f9e4a7e65e7efec867b2668908634181cac38a9: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:1a4373bb9d93a3b5ada44eabc5fc42a548124703fcba53e8085e3392c85649b1: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:5725de981ff2b5977566f75731fb218716625462d0bc5ee519b9923965b5a352: done |++++++++++++++++++++++++++++++++++++++| config-sha256:5d25192c5dd2dfe79ead390db8668baaf10667e5ae789420cda953291f91559f: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:af616670f1a58fbbccff2e7053aa93994bdcc539ab388b668afd8ddf8437ee3d: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:da5d933bec7b35e1ca604c002d06a18e3b3b5e52420edaa8e85e56e8853641b7: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:cbfd4016879986762938d503ee88832c0f32989c07a0e41966f0fdbdb4d82d9f: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:0c2891fbd11945ec68c8a936413f844957ece8196c595f64f683531649293f5b: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:ef52560218e4372dd5bc40de38a2032d66fad82129b39e622b020038220327fc: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:a5d4fb6719df2b4228e2ac875522cae82159c42fd5f60d4de4bf53ece0862368: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:30b9d466ccc9dfbe42ddfb86f57e526f095827cbff25aaa0ff98d861ad791f45: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:6df931e10a58a685f5cfb9bfc29e9127e1145cc3aa05209316edc820a6ebc00b: done |++++++++++++++++++++++++++++++++++++++| elapsed: 66.3s total: 780.8 (11.8 MiB/s) unpacking linux/amd64 sha256:26f7ec425ca145b75edea364a51aa295587ddd5d65ac204e4e6da0e51bddb357... done: 17.972544176sBuat Snapshot disk data Instance ECS. Untuk informasi selengkapnya, lihat Buat Snapshot.
Langkah 4: Pilih Snapshot disk data di kelompok node ACK dan tambahkan node
Buat kelompok node. Selama proses pembuatan, tambahkan disk data dan gunakan Snapshot yang telah Anda buat pada langkah sebelumnya untuk membuat disk tersebut. Atur jumlah node yang diharapkan menjadi 1.
PentingDisk data yang menggunakan Snapshot harus merupakan disk data terakhir. Untuk informasi selengkapnya tentang cara kerja akselerasi, lihat Cara kerja akselerasi cache disk data.
Masuk ke salah satu node dalam kelompok node dan jalankan perintah berikut untuk melihat gambar kontainer.
sudo crictl imagesOutput yang diharapkan:
IMAGE TAG IMAGE ID SIZE ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/qwen 7b-pytorch2.2.0.1-alinux3.2304 5d25192c5dd2d 820MB .......Output menunjukkan bahwa gambar kontainer ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/qwen sudah tersedia.
Karena gambar tersebut telah di-cache di node, beban kerja aplikasi Qwen-7B langsung memasuki status Berjalan setelah dijadwalkan ke node tersebut.
Terapkan aplikasi tanpa menggunakan Snapshot disk data untuk akselerasi
Anda dapat membuat Deployment dengan mengikuti petunjuk di Buat beban kerja tanpa status Deployment. Selama proses pembuatan, pilih gambar kontainer ac2/qwen dari Artifacts.
Skenario 2: Mempercepat inisialisasi node
Skenario ini menjelaskan cara mempercepat inisialisasi node, yaitu proses saat node berubah dari status Created ke status Ready. Prosedurnya sebagai berikut:
Gunakan Instance ECS untuk memuat terlebih dahulu kubelet dan gambar kontainer yang diperlukan oleh ACK ke disk data.
Simpan kubelet dan gambar kontainer dalam cache, lalu buat Snapshot.
Gunakan Snapshot ini sebagai disk data untuk node baru dalam kelompok node guna mempercepat proses inisialisasi node.
Waktu inisialisasi node yang disebutkan dalam skenario ini bersifat teoretis. Waktu aktual tergantung pada lingkungan operasi Anda.
Cache kubelet yang diperlukan oleh ACK menggunakan Snapshot disk data
mkdir -p /mnt/example/ack
export KUBE_VERSION="1.32.1-aliyun.1"
export REGION="cn-hangzhou"
wget http://aliacs-k8s-$REGION.oss-$REGION-internal.aliyuncs.com/public/pkg/kubernetes/kubernetes-$KUBE_VERSION-linux-amd64.tar.gz
tar -xvf kubernetes-$KUBE_VERSION-linux-amd64.tar.gz
mv pkg/kubernetes /mnt/example/ack/Cache gambar yang diperlukan oleh ACK menggunakan Snapshot disk data
Versi komponen sistem dapat berubah selama peningkatan. Hal ini dapat menyebabkan ketidaksesuaian antara versi gambar kontainer dalam cache disk data dan versi gambar yang diterapkan. Jika hal ini terjadi, Anda harus membuat Snapshot disk data baru. Untuk informasi selengkapnya tentang perubahan komponen, lihat Catatan rilis komponen ACK dan perbarui Snapshot sesegera mungkin.
Langkah 1: Ekspor gambar kontainer sistem yang diperlukan
Pada kluster tempat Anda ingin menggunakan Snapshot disk data, buat node baru dan hubungkan ke Instance ECS.
Pada node kluster, gunakan skrip berikut untuk mengekspor gambar sistem yang diperlukan. Setelah skrip dijalankan, file
image_list.txtakan dihasilkan di direktori saat ini.#!/bin/bash # Tetapkan path file output. OUTPUT_FILE="./image_list.txt" # Hapus atau buat file output. > "$OUTPUT_FILE" # Dapatkan nama dan tag semua gambar kontainer. images=$(crictl images --no-trunc|awk 'NR>1 {print $1 ":" $2}') # Iterasi dan ekspor setiap gambar. for image in $images; do echo "$image" >> "$OUTPUT_FILE" done echo "Semua gambar telah diekspor ke $OUTPUT_FILE"
Langkah 2: Buat Snapshot dan tingkatkan jumlah node kluster
Buat Instance ECS dan instal runtime kontainer. Untuk informasi selengkapnya, lihat Skenario 1, Langkah 1, dan Langkah 2.
Unggah file
image_list.txtyang telah Anda hasilkan di Langkah 1 ke Instance ECS.Pada Instance ECS, jalankan skrip berikut untuk menarik secara otomatis semua gambar kontainer komponen sistem yang diperlukan. Jika perintah crictl tidak tersedia, lihat Install crictl untuk menginstalnya.
#!/bin/bash # Tetapkan path file input. INPUT_FILE="./image_list.txt" # Periksa apakah file tersebut ada. if [ ! -f "$INPUT_FILE" ]; then echo "Error: File $INPUT_FILE tidak ada!" exit 1 fi # Iterasi setiap baris (setiap gambar) dalam file input. while IFS= read -r image; do if [ -n "$image" ]; then # Pastikan baris tersebut tidak kosong. echo "Menarik gambar $image..." # Gunakan crictl pull untuk menarik gambar. crictl pull "$image" if [ $? -eq 0 ]; then echo "Gambar $image berhasil ditarik!" else echo "Gagal menarik gambar $image!" fi fi done < "$INPUT_FILE"Hentikan Instance ECS dan buat Snapshot disk data. Untuk informasi selengkapnya, lihat Buat Snapshot.
Buat kelompok node yang memenuhi persyaratan berikut untuk mengonfigurasi Snapshot disk data. Untuk informasi selengkapnya, lihat Buat kelompok node.
Data Disk: Tambahkan disk data dan gunakan Snapshot yang telah Anda buat untuk membuat disk tersebut.
PentingDisk data yang menggunakan Snapshot harus merupakan disk data terakhir. Untuk informasi selengkapnya tentang cara kerja akselerasi, lihat Cara kerja akselerasi cache disk data.
Jika Anda memilih Enable Image Accelerator saat membuat kelompok node, efisiensi pembuatan Snapshot disk data mungkin terpengaruh.
Custom Data: Tambahkan perintah
touch /var/.skip-yumuntuk melewati pembaruan sumber yum saat node bergabung ke kelompok node.
Expected Number Of Nodes: Atur nilai ini menjadi 1.
Periksa waktu yang dibutuhkan oleh node yang dipercepat oleh Snapshot disk data untuk berubah dari status Created ke status Ready. Untuk informasi selengkapnya, lihat Lihat event node.
Cache gambar komponen sistem ACK tanpa menggunakan Snapshot disk data
Anda dapat menggunakan citra ContainerOS untuk membuat node kluster. Kemudian, Anda dapat mengamati waktu yang dibutuhkan oleh node yang tidak dipercepat oleh Snapshot disk data untuk berubah dari status Created ke status Ready. Untuk informasi selengkapnya, lihat periksa event node.
Cara kerja akselerasi cache disk data
Saat Anda membuat kelompok node, Anda dapat menambahkan disk data. Jika disk data diterapkan ke direktori containerd dan menggunakan Snapshot disk data, cache gambar dari Snapshot akan dimuat ke direktori containerd. Saat Anda membuat beban kerja, Anda dapat langsung menggunakan gambar yang telah di-cache, sehingga mengurangi waktu startup aplikasi.