Pada GKE di VMware versi 1.10, penskalaan otomatis cluster untuk kumpulan node di cluster pengguna adalah GA. Penskalaan otomatis cluster akan mengubah ukuran jumlah node dalam kumpulan node tertentu berdasarkan permintaan workload Anda. Anda tidak perlu menambahkan atau menghapus node secara manual, atau menyediakan kumpulan node secara berlebihan. Sebagai gantinya, Anda harus menentukan ukuran minimum dan maksimum untuk kumpulan node, dan sisanya bersifat otomatis.
Jika resource dihapus atau dipindahkan saat melakukan penskalaan otomatis cluster Anda, beban kerja Anda mungkin mengalami gangguan sementara. Misalnya, jika beban kerja Anda adalah satu Pod, dan node-nya saat ini dihapus, Pod tersebut akan dijadwal ulang ke node yang berbeda. Sebelum mengaktifkan penskalaan otomatis, desain workload Anda untuk menoleransi potensi gangguan dan untuk memastikan bahwa Pod penting tidak terganggu.
Penskalaan otomatis cluster dinonaktifkan secara default untuk kumpulan node. Anda dapat mengaktifkan dan menonaktifkan penskalaan otomatis pada kumpulan node cluster pengguna baik selama pembuatan cluster maupun setelah pembuatan cluster, menggunakan perintah gkectl update
.
Cara kerja penskalaan otomatis cluster
Autoscaler cluster bekerja berdasarkan kumpulan per node. Saat mengonfigurasi kumpulan node dengan penskala otomatis cluster, Anda menentukan ukuran minimum dan maksimum untuk kumpulan node.
Autoscaler cluster akan meningkatkan atau menurunkan ukuran kumpulan node secara otomatis, berdasarkan permintaan resource (bukan pemakaian resource sebenarnya) dari Pod yang berjalan di node kumpulan node tersebut. SDK ini secara berkala memeriksa status Pod dan node, serta mengambil tindakan:
- Jika Pod tidak dapat dijadwalkan karena node dalam kumpulan node tidak mencukupi, penskalaan otomatis cluster akan menambahkan node, hingga ukuran maksimum kumpulan node.
- Jika node kurang dimanfaatkan, dan semua Pod dapat dijadwalkan meskipun dengan node yang lebih sedikit di kumpulan node, penskala otomatis cluster akan menghapus node, hingga ke ukuran minimum kumpulan node. Jika node tidak dapat dikosongkan dengan baik, node akan dihentikan secara paksa dan disk yang dikelola Kubernetes yang terpasang dilepas dengan aman.
Jika Pod Anda meminta terlalu sedikit resource (atau belum mengubah setelan default, yang mungkin tidak cukup) dan node Anda mengalami kekurangan, penskala otomatis cluster tidak akan memperbaiki situasi tersebut. Anda dapat membantu memastikan penskalaan otomatis cluster berfungsi seakurat mungkin dengan membuat permintaan resource eksplisit untuk semua beban kerja Anda.
Kriteria pengoperasian
Autoscaler cluster membuat asumsi berikut saat mengubah ukuran kumpulan node:
- Semua Pod yang direplikasi dapat dimulai ulang di beberapa node lain, yang mungkin menyebabkan gangguan singkat. Jika layanan Anda tidak dapat menoleransi gangguan, sebaiknya jangan gunakan autoscaler cluster.
- Pengguna atau administrator tidak mengelola node secara manual. Jika penskala otomatis cluster diaktifkan untuk kumpulan node, Anda tidak dapat mengganti kolom
replicas
dari kumpulan node. - Semua node dalam satu kumpulan node memiliki kumpulan label yang sama.
- Autoscaler cluster mempertimbangkan biaya relatif jenis instance di berbagai kumpulan node, dan mencoba memperluas kumpulan node sedemikian rupa hingga pemborosan yang seminimal mungkin.
Ukuran kumpulan node minimum dan maksimum
Anda dapat menentukan ukuran minimum dan maksimum untuk setiap kumpulan node dalam cluster dengan nilai autoscaling.minReplicas
dan autoscaling.maxReplicas
. Autoscaler cluster membuat keputusan penskalaan ulang dalam batas ini. Nilai replicas
kumpulan node, yang merupakan jumlah default node tanpa penskalaan otomatis, harus lebih besar dari nilai minReplicas
yang ditentukan, dan kurang dari nilai maxReplicas
yang ditentukan. Saat Anda mengaktifkan penskalaan otomatis, penskalaan otomatis cluster akan menunggu untuk diterapkan hingga node baru diperlukan dalam kumpulan node, atau hingga node dapat dihapus dengan aman dari kumpulan node.
Mempertimbangkan gangguan dan penjadwalan Pod
Saat menurunkan skala, autoscaler cluster akan mengikuti aturan penjadwalan dan penghapusan yang ditetapkan di Pod. Pembatasan ini dapat mencegah node dihapus oleh autoscaler. Jika node memiliki Pod dengan salah satu kondisi berikut, node tersebut mungkin tidak akan dihapus.
- Aturan afinitas atau anti-afinitas Pod mencegah penjadwalan ulang.
- Pod memiliki penyimpanan lokal.
- Pod tidak dikelola oleh pengontrol seperti Deployment, StatefulSet, Tugas, atau ReplicaSet.
- Pod berada dalam namespace kube-system dan tidak memiliki PodDisruptionBudget.
PodDisruptionBudget aplikasi juga dapat mencegah penskalaan otomatis. Jika menghapus node akan menyebabkan anggaran terlampaui, skala cluster tidak akan diturunkan.
Untuk informasi selengkapnya tentang autoscaler cluster dan mencegah gangguan, lihat pertanyaan berikut di FAQ autoscaler cluster:
- Bagaimana cara kerja penurunan skala?
- Apakah autoscaler Cluster dapat digunakan dengan PodDisruptionBudget dalam penurunan skala?
- Jenis Pod apa yang dapat mencegah autoscaler Cluster menghapus node?
Batasan
Autoscaler cluster memiliki batasan berikut:
- Penskalaan ke nol replika dalam kumpulan node tidak diizinkan.
- Jumlah node pekerja cluster pengguna pada waktu tertentu setidaknya harus 3. Artinya, jumlah nilai
minReplicas
untuk semua kumpulan node yang diskalakan otomatis, ditambah jumlah nilaireplicas
untuk semua kumpulan node yang tidak diskalakan secara otomatis, minimal harus 3. - Terkadang, autoscaler cluster tidak dapat menurunkan skala sepenuhnya dan ada node tambahan setelah menurunkan skala. Hal ini dapat terjadi jika Pod sistem yang diperlukan dijadwalkan ke node lain, karena tidak ada pemicu bagi Pod tersebut untuk dipindahkan ke node lain. Lihat Saya memiliki beberapa node dengan pemakaian rendah, tetapi tidak diperkecil skalanya. Mengapa demikian?. Untuk mengatasi batasan ini, Anda dapat mengonfigurasi anggaran gangguan Pod.
- Penjadwalan kustom dengan filter yang diubah tidak didukung.
- Node tidak meningkatkan skala jika Pod memiliki nilai
PriorityClass
di bawah-10
. Pelajari lebih lanjut di Bagaimana cara kerja Autoscaler Cluster dengan Prioritas dan Preemption Pod? - Penskalaan otomatis untuk kumpulan node Windows tidak didukung.