Tetapkan jumlah node yang diharapkan untuk kelompok node guna memperluas kapasitas mengikuti pertumbuhan lalu lintas atau mengurangi kapasitas demi memangkas biaya.
ACK mendukung penskalaan otomatis node atau penskalaan instan node untuk menyesuaikan sumber daya node berdasarkan beban kerja.
Cara kerja
Bidang Expected Nodes menetapkan jumlah target node untuk kelompok node. Setelah Anda mengirimkan perubahan, ACK mendorong jumlah node aktual menuju target tersebut — membuat atau menghapus instance ECS sesuai kebutuhan.
Scale out — tingkatkan nilai Expected Nodes di atas jumlah saat ini. ACK menyediakan instance ECS melalui Auto Scaling, menjalankan skrip cloud-init pada masing-masing instance, lalu menambahkannya ke dalam kelompok. Jika pembuatan gagal, ACK akan mencoba ulang secara otomatis. Tipe instance dan zona bergantung pada kebijakan penskalaan kelompok node.
Scale in — kurangi nilai Expected Nodes di bawah jumlah saat ini. Hanya instance ECS berjenis pay-as-you-go yang dilepas selama scale-in. Siklus hidup disk sistem dan disk data sebuah node terikat pada node tersebut. Ketika sebuah node dilepas selama scale-in, disk-nya juga ikut dilepas dan semua data pada disk tersebut hilang secara permanen serta tidak dapat dipulihkan. Untuk data yang memerlukan persistensi, kelola menggunakan PersistentVolume (PV) sehingga penyimpanan terlepas dari siklus hidup node.
Ketika scale-in dipicu dengan mengubah nilai Expected Nodes, ACK menghapus node meskipun proses drain node gagal. Jika Anda memiliki persyaratan drain yang ketat, hapus node target secara manual sebagai gantinya. Lihat Remove a node.
Urutan penghapusan selama scale-in bergantung pada kebijakan penskalaan:
| Scaling policy | Removal order |
|---|---|
| Priority | Instance yang baru dibuat dihapus terlebih dahulu. |
| Distribution balancing | Zona difilter berdasarkan kebijakan; instance yang baru dibuat dihapus terlebih dahulu untuk menyeimbangkan jumlah di seluruh zona. |
| Cost optimization | Instance dihapus berdasarkan urutan harga vCPU dari tertinggi ke terendah. |
Billing during scale-out
Penagihan didasarkan pada spesifikasi aktual instance ECS yang dibuat. Misalnya, dengan dua tipe instance, penagihan pay-as-you-go, dan kebijakan penskalaan Priority:
-
Dua instance Node A dibuat di zona vSwitch prioritas pertama.
-
Jika stok Node A tidak mencukupi, tiga instance Node B dibuat di zona vSwitch prioritas kedua.
Biaya selama satu jam = (harga satuan Node A × 2 × 1) + (harga satuan Node B × 3 × 1).
GPU node pools
Saat menambahkan instance dari keluarga Instance Mesin Fisik ECS ebmgn7 atau ebmgn7e, ACK mereset konfigurasi Multi-Instance GPU (MIG) yang tersimpan pada instance tersebut. Proses reset ini memakan waktu lama dan dapat mencegah instance bergabung ke kluster.
-
Untuk mengatasi kegagalan bergabung, lihat What do I do if I fail to add ECS Bare Metal instances?
-
Lihat GPU-accelerated compute-optimized instance families (gn, ebm, and scc series).
Prasyarat
Pastikan Anda telah memiliki:
-
Kluster ACK dengan setidaknya satu kelompok node
-
(Opsional, untuk RAM user) Peran AliyunOOSLifecycleHook4CSRole telah ditetapkan ke Akun Alibaba Cloud Anda, dan AliyunRAMReadOnlyAccess telah dilampirkan ke RAM user.
Skala kelompok node
Jangan jalankan kubectl delete node. Ini menghapus node dari Kubernetes tanpa melepas instance ECS-nya, sehingga kelompok node kehilangan pelacakan kapasitas. Gunakan Konsol ACK untuk menskala kelompok node.
-
Login ke ACK console. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Nodes > Node Pools.
-
Temukan kelompok node yang akan diskala dan klik Scale di kolom Actions.
-
(Opsional) Jika CloudOps Orchestration Service (OOS) belum diotorisasi, klik AliyunOOSLifecycleHook4CSRole untuk membuat peran dan menyelesaikan otorisasi.
Jika menggunakan RAM user, pastikan Akun Alibaba Cloud telah memiliki peran AliyunOOSLifecycleHook4CSRole sebelum melampirkan AliyunRAMReadOnlyAccess ke RAM user.
-
Tetapkan nilai Expected Nodes dan konfirmasi perubahan. Kolom Status akan berubah melalui Updating, Scaling Out (atau Removing), lalu kembali ke Active.
-
Saat status menunjukkan Scaling Out, kelompok node sedang diperluas. Saat kembali ke Active, proses scale-out selesai.
-
Saat status menunjukkan Removing, kelompok node sedang dikurangi. Saat kembali ke Active, proses scale-in selesai.
PentingJika grup keamanan kluster memblokir akses ke
100.64.0.0/10, node baru tidak dapat bergabung ke kluster. -
Untuk melihat detail tugas scale-out, klik nama kelompok node, lalu buka tab Scaling Activities.
Lihat log operasional pada sebuah node:
grep cloud-init /var/log/messages
Setelah sebuah node bergabung ke kelompok, /var/log/messages dihapus dan hanya menyimpan entri kegagalan bergabung. Jika sebuah node gagal bergabung, log tersebut disinkronkan ke hasil tugas di tab Cluster Tasks.
Operasi yang harus dihindari
Operasi berikut melewati mekanisme jumlah yang diharapkan dan dapat menyebabkan loop rekonsiliasi atau kehilangan data.
| Operation | What happens | What to do instead |
|---|---|---|
Hapus node dengan kubectl delete node |
ACK melacak jumlah node yang diharapkan terhadap instance ECS dalam grup penskalaan, bukan daftar node Kubernetes. Instance ECS tetap berjalan, tetapi node ditampilkan sebagai Unknown. | Klik nama kelompok node, buka tab Nodes, lalu hapus node. Pilih Release ECS Instance jika diperlukan. Node yang ditambahkan secara manual dan node subscription harus dilepas dari ECS console. |
| Lepaskan instance ECS langsung dari Konsol ECS atau API | Kelompok node mendeteksi ketidaksesuaian dan membuat instance ECS baru untuk mengembalikan jumlah yang diharapkan. | Gunakan Konsol ACK untuk menghapus node. Lihat Remove a node. Node yang ditambahkan secara manual dan node subscription memerlukan pelepasan manual dari ECS console. |
| Hapus instance ECS dari grup penskalaan di Konsol Auto Scaling (tanpa mengubah jumlah yang diharapkan) | Kelompok node mendeteksi perubahan dan membuat instance pengganti. | Jangan ubah langsung grup penskalaan yang digunakan oleh kelompok node di Konsol Auto Scaling. |
| Biarkan instance ECS subscription kedaluwarsa | Kelompok node mendeteksi pelepasan dan membuat instance pengganti. | Hapus atau perpanjang instance subscription sebelum kedaluwarsa. Lihat Remove a node dan Renew a subscription instance. |
| Aktifkan pemeriksaan kesehatan pada grup penskalaan di Auto Scaling console | Saat pemeriksaan kesehatan mengidentifikasi instance yang tidak sehat (misalnya, ditangguhkan), Auto Scaling membuat instance ECS pengganti. | Pemeriksaan kesehatan dinonaktifkan secara default untuk grup penskalaan yang digunakan oleh ACK. Jangan ubah pengaturan ini. |
Pemecahan masalah kegagalan penskalaan
Jika penskalaan gagal, klik nama kluster di halaman Clusters, buka tab Cluster Tasks, lalu klik View Cause untuk melihat detail error.
| Error code | Cause | Solution |
|---|---|---|
RecommendEmpty.InstanceTypeNoStock |
Stok ECS tidak mencukupi di zona saat ini. | Modify the node pool untuk menambahkan vSwitch di zona berbeda dan mengonfigurasi beberapa tipe instance. Lihat Check the scalability of a node pool. |
NodepoolScaleFailed.FailedJoinCluster |
Node gagal bergabung ke kluster ACK. | Login ke node dan jalankan grep cloud-init /var/log/messages untuk memeriksa error. |
InvalidAccountStatus.NotEnoughBalance / InsufficientBalance.CreditPay / Account.Arrearage |
Saldo akun tidak mencukupi. | Isi ulang akun Anda. |
InvalidParameter.NotMatch (ketidakcocokan mode boot) |
Tipe instance tidak mendukung mode boot citra OS (BIOS). | Pilih tipe instance yang berbeda. Periksa OS dan ID citra di tab Overview kelompok node. Panggil DescribeImageSupportInstanceTypes untuk menanyakan tipe instance yang didukung. |
QuotaExceed.ElasticQuota |
Kuota ECS melebihi batas untuk tipe instance tertentu di wilayah saat ini. | Pilih tipe instance yang berbeda, kurangi instance ECS yang ada, atau ajukan peningkatan kuota di Quota Center. |
InvalidResourceType.NotSupported |
Tipe instance tidak didukung atau stok habis di zona saat ini. | Panggil DescribeAvailableResource untuk menemukan tipe instance yang didukung di zona tersebut, lalu perbarui kelompok node. |
InvalidImage.NotSupported |
Citra OS tidak mendukung instance yang ditingkatkan keamanannya. | Pilih tipe instance yang berbeda. Lihat Create a trusted instance in the ECS console untuk citra yang didukung. |
InvalidParameter.NotMatch (ketidakcocokan citra vTPM) |
Citra OS memerlukan tipe instance yang mendukung vTPM. | Pilih tipe instance yang berbeda. Periksa OS dan ID citra di tab Overview kelompok node. |
QuotaExceeded.PrivateIpAddress |
vSwitch saat ini tidak memiliki alamat IP pribadi yang tersedia. | Tambahkan lebih banyak vSwitch ke kelompok node dan coba lagi. |
InvalidParameter.KmsNotEnabled |
Kunci Key Management Service (KMS) dinonaktifkan. | Login ke KMS console dan aktifkan kunci tersebut. |
InvalidInstanceType.NotSupported |
Tipe instance tidak mendukung arsitektur citra OS. | Pilih tipe instance yang berbeda. Panggil DescribeImageSupportInstanceTypes untuk menanyakan tipe instance yang kompatibel. Lihat OS images untuk citra yang didukung ACK. |
ApiServer.InternalError / Err.QueryEndpoints |
Server API kluster ACK tidak dapat dijangkau. | Periksa aksesibilitas server API. Lihat Troubleshoot cluster access issues in the ACK console. |
RecommendEmpty.InstanceTypeNotAuthorized |
Tidak memiliki izin untuk menggunakan tipe instance yang ditentukan. | Submit a ticket untuk meminta izin ECS. |
RecommendEmpty.DiskTypeNoStock |
Stok disk cloud tidak mencukupi di zona tersebut. | Tambahkan lebih banyak vSwitch atau pilih tipe disk yang berbeda. |
InvalidParameter.KMSKeyId.KMSUnauthorized |
Tidak memiliki izin untuk mengakses KMS. | Di ECS console, tetapkan peran AliyunECSDiskEncryptDefaultRole ke ECS. Lihat Encryption-related permissions. |
InvalidParameter.Conflict |
Tipe disk cloud tidak kompatibel dengan tipe instance. | Pilih tipe instance atau tipe disk yang berbeda. |
NotSupportSnapshotEncrypted.DiskCategory |
Enkripsi disk sistem memerlukan ESSD. | Pilih ESSD. Untuk tipe disk dan enkripsi, lihat Disk types and encryption. |
ScalingActivityInProgress |
Kelompok node sedang dalam proses penskalaan. | Tunggu hingga aktivitas penskalaan saat ini selesai sebelum mencoba lagi. Jangan skala kelompok node langsung di Konsol Auto Scaling. |
Instance.StartInstanceFailed |
Instance ECS gagal dimulai. | Coba lagi. Jika masalah berlanjut, submit a ticket ke tim ECS. |
OperationDenied.NoStock |
Tipe instance stok habis di zona yang ditentukan. | Pilih tipe instance yang berbeda. Lihat Check the scalability of a node pool. |
NodepoolScaleFailed.WaitForDesiredSizeTimeout |
Tugas scale-out melebihi batas waktu. | Di Konsol ACK, buka Clusters > nama kluster > Nodes > Node Pools, klik nama kelompok node, lalu buka tab Scaling Activities untuk melihat detail tugas. |
ApiServer.TooManyRequests |
Server API Kubernetes melakukan pengendalian aliran terhadap permintaan. | Kurangi frekuensi permintaan atau coba lagi nanti. |
NodepoolScaleFailed.PartialSuccess |
Beberapa node gagal dibuat karena stok tidak mencukupi. | Ubah tipe instance yang dikonfigurasi untuk kelompok node. Lihat Check the scalability of a node pool. Lihat Edit a node pool. |
Langkah selanjutnya
-
Remove a node — operasi dan tindakan pencegahan untuk menghapus node dari kelompok node.
-
Node pool O&M — upgrade, perbaikan otomatis, dan patching CVE OS untuk kelompok node.
-
Best practices for nodes and node pools — deployment sets, kelompok node berbasis instance preemptible, dan lainnya.