Pada skenario seperti AI dan big data yang memerlukan skala keluar secara berkala, node baru menghabiskan waktu signifikan untuk menarik gambar komponen dan aplikasi saat bergabung ke kluster. Untuk meningkatkan kecepatan kesiapan node, Anda dapat menyimpan cache komponen dan gambar terlebih dahulu ke dalam snapshot disk data. Hal ini memungkinkan node baru memuat data langsung dari disk lokal alih-alih melalui jaringan, sehingga secara signifikan meningkatkan efisiensi skala keluar.
Cara kerja
Dalam proses skala keluar default, tahapan berikut yang bergantung pada jaringan menghabiskan sebagian besar waktu mulai dari pembuatan node hingga aplikasi berhasil berjalan di node tersebut:
-
Penarikan gambar sistem: Runtime kontainer (containerd) perlu menarik gambar yang diperlukan untuk Pod sistem, seperti Terway dan kube-proxy.
-
Penarikan gambar aplikasi: Setelah node menjadi ready, Pod dijadwalkan ke node tersebut, dan runtime kontainer harus menarik gambar kontainer untuk aplikasi.
Ketika kelompok node menggunakan snapshot disk data untuk skala keluar, operasi pemuatan lokal menggantikan operasi penarikan melalui jaringan:
-
Kesiapan node lebih cepat: Skrip inisialisasi memeriksa jalur lokal terlebih dahulu. Karena snapshot telah memuat gambar sistem sebelumnya, node melewati proses unduh dan tarik, sehingga mencapai status Ready lebih cepat.
-
Startup aplikasi lebih cepat: Karena gambar aplikasi telah disimpan dalam cache di snapshot, ketika Pod dijadwalkan ke node baru, runtime kontainer dapat menemukan gambar yang diperlukan secara lokal, memungkinkan startup aplikasi yang cepat.
Langkah 1: Siapkan node untuk snapshot
Buat Instance ECS dengan komponen inti ACK dan gambar aplikasi yang diperlukan. Anda kemudian akan membuat snapshot dari disk data instance tersebut.
-
Siapkan Instance ECS untuk pembuatan snapshot.
-
Buat kelompok node di kluster dengan konfigurasi utama berikut. Selama proses ini, ACK secara otomatis menyimpan gambar add-on seperti Terway dan gambar komponen kube-proxy ke disk data.
-
Logon Type: Konfigurasikan pasangan kunci atau kata sandi untuk login ke instance.
-
Expected Number of Nodes: Atur ke 1.
-
Data Disk: Tambahkan setidaknya satu disk data.
Jika Anda telah mendapatkan persetujuan untuk fitur Initialization Settings melalui allowlist, pilih Format and use as a directory of the container runtime. Ini memastikan lingkungan runtime kontainer disediakan di disk data.
-
-
Setelah node menjadi ready, hapus node tersebut dari kluster. Saat menghapus node, jangan pilih Release ECS Instance agar instance ECS dasarnya tetap dipertahankan.
-
-
Login ke Instance ECS yang dipertahankan dan tambahkan komponen serta file gambar yang diperlukan ke disk data secara manual.
-
Login ke Instance ECS dan jalankan perintah
lsblk -funtuk melihat jalur pemasangan disk data, misalnya/var/lib/container. -
Simpan cache komponen kubelet.
-
Buka direktori pemasangan disk data dan buat direktori cache untuk komponen ACK.
cd /var/lib/container mkdir -p ack -
Tetapkan variabel lingkungan untuk wilayah dan versi kluster Anda.
# Contoh ini menggunakan wilayah cn-shanghai dan versi 1.34.1-aliyun.1. Ganti dengan nilai aktual Anda. export REGION="cn-shanghai" export KUBE_VERSION="1.34.1-aliyun.1" -
Unduh, ekstrak, dan pindahkan file biner kubelet ke direktori cache.
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 /var/lib/container/ack/ -
Bersihkan file sementara untuk menjaga ukuran snapshot tetap ringkas.
rm kubernetes-$KUBE_VERSION-linux-amd64.tar.gz rm -rf pkg
-
-
-
(Opsional) Simpan cache gambar aplikasi.
Tarik gambar aplikasi yang sering digunakan ke instance lokal. Gambar-gambar ini akan dimasukkan ke dalam snapshot, sehingga mempercepat startup Pod aplikasi Anda.
# Anda juga dapat menggunakan 'docker pull' jika Docker tersedia di lingkungan Anda. # Perintah berikut menggunakan gambar Nginx sebagai contoh. crictl pull anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
Langkah 2: Buat snapshot disk data
Buat snapshot dari disk data yang telah berisi komponen dan gambar yang disimpan dalam cache. Snapshot ini dapat digunakan kembali untuk skala keluar kelompok node di masa depan.
-
Buka ECS console - Instances, lalu atur instance target ke status Stop.
Untuk informasi lebih lanjut tentang cara menghentikan instance, lihat Stop an instance.
-
Setelah instance dihentikan, buka halaman detailnya dan klik tab EBS.
-
Temukan disk data yang berfungsi sebagai direktori runtime kontainer. Pada kolom Actions, klik Create Snapshot dan ikuti petunjuk di layar untuk mengonfigurasi snapshot.
Untuk informasi lebih lanjut tentang cara mengonfigurasi snapshot, lihat Manually create a snapshot.
Langkah 3: Lakukan skala keluar dengan snapshot dan verifikasi hasilnya
-
Buat kelompok node dan terapkan snapshot yang telah Anda buat sebelumnya. Konfigurasi utamanya adalah sebagai berikut:
-
Operating System: Pilih sistem operasi sesuai kebutuhan.
Fitur ini saat ini tidak didukung untuk ContainerOS versi 3.5 dan yang lebih baru.
-
Expected Number of Nodes: Atur ke 1 atau lebih.
-
Data Disk:
-
Pilih From Data Disk Snapshot dan pilih snapshot yang telah Anda buat.
-
Jika Anda telah mendapatkan persetujuan untuk fitur Initialization Settings melalui allowlist, pilih Format and use as a directory of the container runtime. Proses pemformatan ini mempertahankan data dalam snapshot.
-
-
User Data Untuk sistem operasi selain ContainerOS, tambahkan skrip berikut untuk melewati pembaruan
yumdan mempercepat inisialisasi node.touch /var/.skip-yum
-
-
Setelah node baru siap, login ke salah satu node dan periksa apakah cache telah berfungsi dengan sukses.
-
Periksa apakah cache gambar berfungsi.
Periksa log kubelet. Cache berfungsi jika log tidak menampilkan catatan penarikan untuk gambar yang telah disimpan dalam cache sebelumnya.
# Jika perintah ini tidak menghasilkan output, atau output tidak berisi catatan penarikan untuk gambar yang telah di-cache seperti Terway atau kube-proxy, maka cache berfungsi. journalctl -u kubelet | grep "pulled image" -
Periksa apakah cache kubelet berfungsi.
Periksa log
ack-deploy. Tidak adanya pesancheck cached kubernetes failedmenunjukkan bahwa cache berfungsi.# Jika perintah ini tidak menghasilkan output, kubelet yang di-cache berhasil digunakan. cat /var/log/ack-deploy.log |grep "check cached kubernetes failed"
-
Penagihan
Instance ECS temporary yang digunakan untuk pembuatan snapshot, disk cloud yang terpasang, dan snapshot yang dihasilkan semuanya dikenai biaya.
Setelah menyelesaikan proses, segera release instance ECS temporary tersebut. Kelola siklus hidup snapshot secara berkala dan hapus snapshot yang tidak diperlukan untuk mengurangi biaya.
FAQ
Apakah saya dapat menggunakan snapshot lama setelah upgrade?
Hal ini tidak disarankan. Versi kubelet yang disimpan dalam cache di snapshot mungkin tidak kompatibel dengan versi kluster baru, sehingga mencegah node mendaftar dengan benar. Setelah upgrade kluster, kami menyarankan untuk membuat snapshot disk data baru.
Apakah saya dapat menyimpan cache file selain kubelet dan gambar kontainer?
Ya. Semua file yang ditempatkan di jalur disk data akan dimasukkan ke dalam snapshot. Anda dapat menyimpan cache file dependensi lainnya, seperti file konfigurasi atau model data, sesuai kebutuhan aplikasi Anda. Namun, pastikan Anda mengelola ukuran dan kepatuhan konten snapshot Anda.