Container Service for Kubernetes (ACK) menyediakan manajemen node yang stabil, efisien, dan dapat diprediksi. Saat Anda membuat node baru atau melakukan penskalaan keluar pada kelompok node yang ada, ACK mengikuti proses inisialisasi standar dengan menginstal dan mengonfigurasi perangkat lunak sesuai konfigurasi kelompok node, lalu menambahkan node tersebut ke kluster Kubernetes.
Catatan penggunaan
Proses ini berlaku untuk kelompok node Elastic Compute Service (ECS) dan Elastic GPU Service (EGS) di kluster ACK yang dikelola dan kluster khusus ACK yang menjalankan Kubernetes versi 1.20 atau lebih baru.
Ikhtisar proses
Langkah 1: Buat node
Setelah menerima permintaan penskalaan keluar atau penambahan node secara otomatis, ACK membuat instans ECS atau EGS berdasarkan konfigurasi kelompok node, seperti tipe instans, citra, dan disk. Sistem operasi kemudian melakukan inisialisasi dasar, seperti mengonfigurasi jaringan dan memasang sistem disk.
Selanjutnya, Cloud-init menjalankan skrip User Data. Skrip ini terdiri dari Pre-defined Custom Data, skrip inisialisasi ACK, dan User Data.
Langkah 2: Jalankan skrip pra-kustomisasi
Cloud-init pertama-tama menjalankan Pre-defined Custom Data. Skrip ini biasanya menginstal paket dependensi sistem tertentu atau agen pemantauan, serta melakukan pemeriksaan atau konfigurasi lingkungan awal.
Langkah 3: Jalankan skrip inisialisasi ACK
Tahap ini mencakup beberapa langkah dan menyediakan mekanisme skip fleksibel untuk berbagai kasus penggunaan.
3.1 Siapkan lingkungan dasar
Langkah ini mengonfigurasi lingkungan dasar yang diperlukan untuk Kubernetes pada node.
Alur eksekusi
Jalankan layanan chronyd: Ini memastikan waktu node disinkronkan dengan server Network Time Protocol (NTP).
Tetapkan Node ID dan hostname.
Node ID: Menghitung dan menetapkan ID node dalam kluster Kubernetes.
Hostname: Jika Custom Node Name dikonfigurasi untuk kelompok node, nama tersebut juga ditetapkan sebagai hostname node.
Inisialisasi data disk: Jika data disk dikonfigurasi untuk kelompok node, secara default sistem akan mencari data disk terakhir dalam urutan leksikografis (disk NVMe diprioritaskan), memformatnya, lalu memasangnya. Disk ini digunakan untuk menyimpan lingkungan runtime kontainer, seperti direktori kerja containerd di
/var/lib/containerd.
Mekanisme skip
Untuk mengelola partisi dan sistem file data disk secara manual, atau menggunakan data disk yang sudah berisi data historis, buat file
/var/.skip-auto-fdiskdalam pre-defined custom data agar melewati pemformatan otomatis.Jika Anda tidak melewati pemformatan otomatis tetapi ingin menyimpan dan memigrasikan data dari direktori runtime asli (seperti cache gambar), buat file
/var/.keep-container-data. Setelah data disk dipasang, sistem akan menyalin data yang ada ke direktori baru. Hal ini mencegah sistem menarik ulang gambar-gambar tersebut.
3.2 Instal add-on Kubernetes
Langkah ini menginstal add-on inti yang diperlukan untuk menjalankan Kubernetes.
Instal dan konfigurasikan kubelet. Untuk informasi selengkapnya, lihat Kustomisasi konfigurasi kubelet untuk kelompok node.
Instal dan konfigurasikan runtime kontainer, seperti containerd. Untuk informasi selengkapnya, lihat Kustomisasi konfigurasi containerd untuk kelompok node.
3.3 Instal add-on sesuai kebutuhan
ACK menginstal add-on opsional berdasarkan konfigurasi kelompok node.
Instal driver perangkat keras heterogen dan device plugin: Jika node merupakan instans komputasi heterogen, seperti instans GPU atau NPU, sistem secara otomatis menginstal driver yang sesuai dan device plugin Kubernetes, seperti NVIDIA Device Plugin. Hal ini memungkinkan kluster mendeteksi dan menjadwalkan sumber daya tersebut.
Instal perangkat lunak akselerasi citra: Jika fitur seperti Gunakan pemuatan on-demand gambar kontainer untuk mempercepat startup kontainer diaktifkan, sistem menginstal perangkat lunak akselerasi terkait dan memodifikasi konfigurasi runtime kontainer. Hal ini meningkatkan kecepatan startup kontainer.
Instal perangkat lunak terkait SGX: Jika komputasi rahasia berbasis TEE diaktifkan, sistem menginstal driver Software Guard Extensions (SGX) dan dependensi terkait. Hal ini menyediakan lingkungan eksekusi tepercaya untuk menjalankan kontainer rahasia.
3.4 Daftarkan kluster
Setelah add-on inti diinstal, kubelet dijalankan dan mendaftar ke API server kluster. Selanjutnya, node tersebut secara resmi ditambahkan ke kluster dengan status awal NotReady.
3.5 Instal perangkat lunak dasar tambahan
Untuk memastikan stabilitas dan keamanan node, ACK secara default menginstal paket perangkat lunak dasar tambahan dan melakukan pembaruan keamanan.
Alur eksekusi
Instal toolkit dasar: Menginstal tool umum seperti
pigz,container-selinux, danzlibuntuk fitur lanjutan seperti penyimpanan dan jaringan.Pembaruan keamanan (hanya untuk Alibaba Cloud Linux):
Upgrade
systemdjika diperlukan: Versisystemdmungkin ditingkatkan untuk memastikan stabilitas dan fungsionalitas.Lakukan perbaikan kerentanan keamanan
minimal: Secara otomatis memperbaiki Common Vulnerabilities and Exposures (CVE) dengan menjalankanyum update-minimal --exclude kernel* --security -y.
Mekanisme Peloncatan
Buat file
/var/.skip-yumuntuk sepenuhnya melewati langkah ini, termasuk perbaikan CVE. Ini berguna untuk lingkungan offline atau kasus penggunaan yang memerlukan pengendalian versi ketat.Buat file
/var/.skip-security-fixuntuk hanya melewati perbaikan kerentanan CVE. Toolkit dasar tetap diinstal.
3.6 Terapkan konfigurasi OS kelompok node
Setelah semua perangkat lunak diinstal dan diperbarui, sistem menerapkan ulang konfigurasi OS kelompok node untuk memastikan bahwa semua pengaturan berlaku di lingkungan akhir. Untuk informasi selengkapnya, lihat Kelola parameter OS untuk kelompok node.
3.7 Aktifkan penguatan keamanan sesuai kebutuhan
Berdasarkan fitur Security Hardening yang dikonfigurasi untuk kelompok node (seperti Penguatan Keamanan OS), sistem menjalankan skrip yang sesuai. Skrip ini memperkuat parameter kernel dan membatasi izin sistem untuk memenuhi standar keamanan perusahaan.
Langkah 4: Jalankan skrip kustom
Pada tahap ini, skrip kustom (disediakan sebagai User Data) dieksekusi. Skrip ini umumnya digunakan untuk melakukan tugas inisialisasi tingkat aplikasi, seperti membuat direktori data aplikasi atau menjalankan layanan pembantu non-kontainer.
Alur eksekusi paralel
Perubahan status (dari NotReady ke Ready)
Setelah node ditambahkan ke kluster dan berada dalam status NotReady, kubelet-nya terus-menerus berkomunikasi dengan lapisan kontrol. Ketika add-on utama pada node siap dan node lulus semua pemeriksaan kesehatan, statusnya secara otomatis berubah menjadi Ready. Penjadwal Kubernetes kemudian menganggap node tersebut sebagai resource yang tersedia dan mulai menjadwalkan Pod di atasnya.
Penjelasan mekanisme paralel
Perubahan status node dan eksekusi User Data merupakan tugas paralel.
Non-blocking: Eksekusi User Data bersifat independen terhadap transisi node ke status
Ready. Artinya, hasil eksekusi skrip (sukses, gagal, atau durasi) tidak mencegah node menjadiReady.Waktu eksekusi: Kedua proses berjalan secara paralel. Anda tidak dapat mengasumsikan bahwa Pod aplikasi sedang berjalan di node saat skrip User Data selesai. Sebaliknya, Anda juga tidak dapat mengasumsikan bahwa skrip telah selesai saat Pod mulai berjalan di node.
Pelacakan log: Untuk memeriksa status eksekusi skrip kustom, login ke node dan jalankan perintah
cat /var/log/cloud-init-output.loguntuk melihat log eksekusi dan status akhirnya.