Auto Scaling - Panduan Pengguna Eksctl

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Auto Scaling

Aktifkan Auto Scaling

Anda dapat membuat cluster (atau nodegroup di cluster yang ada) dengan peran IAM yang memungkinkan penggunaan autoscaler cluster:

eksctl create cluster --asg-access

Bendera ini juga menetapkan k8s.io/cluster-autoscaler/enabled dan memberi k8s.io/cluster-autoscaler/<clusterName> tag, jadi penemuan nodegroup akan berfungsi.

Setelah cluster berjalan, Anda harus menginstal Cluster Autoscaler itu sendiri.

Anda juga harus menambahkan yang berikut ini ke definisi nodegroup terkelola atau tidak terkelola untuk menambahkan tag yang diperlukan untuk Cluster Autoscaler untuk menskalakan nodegroup:

nodeGroups: - name: ng1-public iam: withAddonPolicies: autoScaler: true

Meningkat dari 0

Jika Anda ingin dapat meningkatkan skala grup node Anda dari 0 dan Anda memiliki label and/or taint yang ditentukan pada nodegroup Anda, Anda harus menyebarkannya sebagai tag pada Grup Auto Scaling () Anda. ASGs

Salah satu cara untuk melakukannya adalah dengan mengatur tag ASG di tags bidang definisi nodegroup Anda. Misalnya, diberikan nodegroup dengan label dan taints berikut:

nodeGroups: - name: ng1-public ... labels: my-cool-label: pizza taints: key: feaster value: "true" effect: NoSchedule

Anda perlu menambahkan tag ASG berikut:

nodeGroups: - name: ng1-public ... labels: my-cool-label: pizza taints: feaster: "true:NoSchedule" tags: k8s.io/cluster-autoscaler/node-template/label/my-cool-label: pizza k8s.io/cluster-autoscaler/node-template/taint/feaster: "true:NoSchedule"

Untuk nodegroup terkelola dan tidak terkelola, ini dapat dilakukan secara otomatis dengan menyetel propagateASGTags ketrue, yang akan menambahkan label dan taints sebagai tag ke grup Auto Scaling:

nodeGroups: - name: ng1-public ... labels: my-cool-label: pizza taints: feaster: "true:NoSchedule" propagateASGTags: true

Auto Scaling yang sadar zona

Jika beban kerja Anda khusus zona, Anda harus membuat nodegroup terpisah untuk setiap zona. Ini karena cluster-autoscaler mengasumsikan bahwa semua node dalam grup sama persis. Jadi, misalnya, jika peristiwa peningkatan skala dipicu oleh pod yang membutuhkan PVC khusus zona (misalnya volume EBS), node baru mungkin dijadwalkan di AZ yang salah dan pod akan gagal memulai.

Anda tidak memerlukan nodegroup terpisah untuk setiap AZ jika lingkungan Anda memenuhi kriteria berikut:

  • Tidak ada persyaratan penyimpanan khusus zona.

  • Tidak diperlukan PodAffinity dengan topologi selain host.

  • Tidak diperlukan NodeAffinity pada label zona.

  • Tidak ada NodeSelector pada label zona.

(Baca lebih lanjut di sini dan di sini.)

Jika Anda memenuhi semua persyaratan di atas (dan mungkin yang lain) maka Anda harus aman dengan satu nodegroup yang mencakup beberapa. AZs Jika tidak, Anda akan ingin membuat nodegroup single-AZ yang terpisah:

SEBELUM:

nodeGroups: - name: ng1-public instanceType: m5.xlarge # availabilityZones: ["eu-west-2a", "eu-west-2b"]

SETELAH:

nodeGroups: - name: ng1-public-2a instanceType: m5.xlarge availabilityZones: ["eu-west-2a"] - name: ng1-public-2b instanceType: m5.xlarge availabilityZones: ["eu-west-2b"]