View a markdown version of this page

Bekerja dengan grup simpul - Panduan Pengguna Eksctl

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

Bekerja dengan grup simpul

Membuat kelompok simpul

Anda dapat menambahkan satu atau lebih nodegroup selain nodegroup awal yang dibuat bersama dengan cluster.

Untuk membuat nodegroup tambahan, gunakan:

eksctl create nodegroup --cluster=<clusterName> [--name=<nodegroupName>]
catatan

--versionflag tidak didukung untuk grup simpul terkelola. Itu selalu mewarisi versi dari bidang kontrol.

Secara default, nodegroups baru yang tidak dikelola mewarisi versi dari bidang kontrol (--version=auto), tetapi Anda dapat menentukan versi yang berbeda, Anda juga dapat menggunakan --version=latest untuk memaksa penggunaan versi mana pun yang terbaru.

Selain itu, Anda dapat menggunakan file konfigurasi yang sama yang digunakan untukeksctl create cluster:

eksctl create nodegroup --config-file=<path>

Membuat nodegroup dari file konfigurasi

Nodegroups juga dapat dibuat melalui definisi cluster atau file konfigurasi. Diberikan contoh file konfigurasi berikut dan cluster yang ada disebutdev-cluster:

# dev-cluster.yaml apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: dev-cluster region: eu-north-1 managedNodeGroups: - name: ng-1-workers labels: { role: workers } instanceType: m5.xlarge desiredCapacity: 10 volumeSize: 80 privateNetworking: true - name: ng-2-builders labels: { role: builders } instanceType: m5.2xlarge desiredCapacity: 2 volumeSize: 100 privateNetworking: true

Nodegroups ng-1-workers dan ng-2-builders dapat dibuat dengan perintah ini:

eksctl create nodegroup --config-file=dev-cluster.yaml

Penyeimbangan Beban

Jika Anda sudah siap untuk melampirkan grup or/and target penyeimbang beban klasik yang ada ke grup node, Anda dapat menentukan ini di file konfigurasi. Kelompok or/and target penyeimbang beban klasik secara otomatis dikaitkan dengan ASG saat membuat grup simpul. Ini hanya didukung untuk grup simpul yang dikelola sendiri yang ditentukan melalui bidang. nodeGroups

# dev-cluster-with-lb.yaml apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: dev-cluster region: eu-north-1 nodeGroups: - name: ng-1-web labels: { role: web } instanceType: m5.xlarge desiredCapacity: 10 privateNetworking: true classicLoadBalancerNames: - dev-clb-1 - dev-clb-2 asgMetricsCollection: - granularity: 1Minute metrics: - GroupMinSize - GroupMaxSize - GroupDesiredCapacity - GroupInServiceInstances - GroupPendingInstances - GroupStandbyInstances - GroupTerminatingInstances - GroupTotalInstances - name: ng-2-api labels: { role: api } instanceType: m5.2xlarge desiredCapacity: 2 privateNetworking: true targetGroupARNs: - arn:aws:elasticloadbalancing:eu-north-1:01234567890:targetgroup/dev-target-group-1/abcdef0123456789

Pemilihan nodegroup dalam file konfigurasi

Untuk melakukan delete operasi create atau hanya pada subset dari kelompok simpul yang ditentukan dalam file konfigurasi, ada dua flag CLI yang menerima daftar glob, dan, misalnya: –0— –1—

eksctl create nodegroup --config-file=<path> --include='ng-prod-*-??' --exclude='ng-test-1-ml-a,ng-test-2-?'

Menggunakan contoh file konfigurasi di atas, seseorang dapat membuat semua pekerja nodegroup kecuali pekerja satu dengan perintah berikut:

eksctl create nodegroup --config-file=dev-cluster.yaml --exclude=ng-1-workers

Atau seseorang dapat menghapus builder nodegroup dengan:

eksctl delete nodegroup --config-file=dev-cluster.yaml --include=ng-2-builders --approve

Dalam hal ini, kita juga perlu menyediakan --approve perintah untuk benar-benar menghapus nodegroup.

Sertakan dan mengecualikan aturan

  • jika tidak --include atau --exclude ditentukan semuanya disertakan

  • jika hanya --include ditentukan, hanya grup simpul yang cocok dengan glob tersebut yang akan disertakan

  • jika hanya --exclude ditentukan, semua kelompok simpul yang tidak cocok dengan glob tersebut disertakan

  • jika keduanya ditentukan maka --exclude aturan lebih diutamakan --include (yaitu grup simpul yang cocok dengan aturan di kedua grup akan dikecualikan)

Daftar kelompok simpul

Untuk mencantumkan detail tentang nodegroup atau semua grup nodegroup, gunakan:

eksctl get nodegroup --cluster=<clusterName> [--name=<nodegroupName>]

Untuk membuat daftar satu atau lebih nodegroup dalam format YAML atau JSON, yang menghasilkan lebih banyak info daripada tabel log default, gunakan:

# YAML format eksctl get nodegroup --cluster=<clusterName> [--name=<nodegroupName>] --output=yaml # JSON format eksctl get nodegroup --cluster=<clusterName> [--name=<nodegroupName>] --output=json

Kekekalan kelompok nodegroup

Secara desain, kelompok simpul tidak dapat diubah. Ini berarti bahwa jika Anda perlu mengubah sesuatu (selain penskalaan) seperti AMI atau jenis instance dari nodegroup, Anda perlu membuat nodegroup baru dengan perubahan yang diinginkan, memindahkan beban dan menghapus yang lama. Lihat bagian Menghapus dan menguras kelompok simpul.

Menskalakan kelompok simpul

Penskalaan Nodegroup adalah proses yang dapat memakan waktu hingga beberapa menit. Ketika --wait flag tidak ditentukan, secara eksctl optimis mengharapkan nodegroup untuk diskalakan dan kembali segera setelah permintaan AWS API telah dikirim. Untuk eksctl menunggu sampai node tersedia, tambahkan --wait flag seperti contoh di bawah ini.

catatan

Menskalakan nodegroup down/in (yaitu mengurangi jumlah node) dapat mengakibatkan kesalahan karena kami hanya mengandalkan perubahan pada ASG. Ini berarti bahwa simpul tidak dikeringkan removed/terminated secara eksplisit. Ini mungkin menjadi area untuk perbaikan di masa depan.

Penskalaan nodegroup terkelola dicapai dengan memanggil API EKS secara langsung yang memperbarui konfigurasi grup node terkelola.

Menskalakan satu nodegroup

Sebuah nodegroup dapat diskalakan dengan menggunakan perintah: eksctl scale nodegroup

eksctl scale nodegroup --cluster=<clusterName> --nodes=<desiredCount> --name=<nodegroupName> [ --nodes-min=<minSize> ] [ --nodes-max=<maxSize> ] --wait

Misalnya, untuk menskalakan nodegroup ng-a345f4e1 cluster-1 menjadi 5 node, jalankan:

eksctl scale nodegroup --cluster=cluster-1 --nodes=5 ng-a345f4e1

Sebuah nodegroup juga dapat diskalakan dengan menggunakan file konfigurasi yang diteruskan ke --config-file dan menentukan nama nodegroup yang harus diskalakan. --name Eksctl akan mencari file konfigurasi dan menemukan nodegroup itu serta nilai konfigurasi penskalaannya.

Jika jumlah node yang diinginkan berada NOT dalam kisaran node minimum dan maksimum saat ini, satu kesalahan spesifik akan ditampilkan. Nilai-nilai ini juga dapat dilewatkan dengan flag --nodes-min dan --nodes-max masing-masing.

Menskalakan beberapa kelompok simpul

Eksctl dapat menemukan dan menskalakan semua grup node yang ditemukan dalam file konfigurasi yang diteruskan. --config-file

Mirip dengan penskalaan satu nodegroup, kumpulan validasi yang sama berlaku untuk setiap nodegroup. Misalnya, jumlah node yang diinginkan harus berada dalam kisaran jumlah minimum dan maksimum node.

Menghapus dan menguras kelompok simpul

Untuk menghapus nodegroup, jalankan:

eksctl delete nodegroup --cluster=<clusterName> --name=<nodegroupName>

Aturan Sertakan dan Kecualikan juga dapat digunakan dengan perintah ini.

catatan

Ini akan menguras semua pod dari nodegroup itu sebelum instance dihapus.

Untuk melewati aturan penggusuran selama proses pembuangan, jalankan:

eksctl delete nodegroup --cluster=<clusterName> --name=<nodegroupName> --disable-eviction

Semua node dibatasi dan semua pod diusir dari nodegroup saat dihapus, tetapi jika Anda perlu menguras nodegroup tanpa menghapusnya, jalankan:

eksctl drain nodegroup --cluster=<clusterName> --name=<nodegroupName>

Untuk membuka kordon nodegroup, jalankan:

eksctl drain nodegroup --cluster=<clusterName> --name=<nodegroupName> --undo

Untuk mengabaikan aturan penggusuran seperti PodDisruptionBudget pengaturan, jalankan:

eksctl drain nodegroup --cluster=<clusterName> --name=<nodegroupName> --disable-eviction

Untuk mempercepat proses pembuangan, Anda dapat menentukan --parallel <value> jumlah node yang akan mengalir secara paralel.

Fitur lainnya

Anda juga dapat mengaktifkan SSH, akses ASG, dan fitur lainnya untuk nodegroup, misalnya:

eksctl create nodegroup --cluster=cluster-1 --node-labels="autoscaling=enabled,purpose=ci-worker" --asg-access --full-ecr-access --ssh-access

Perbarui label

Tidak ada perintah khusus eksctl untuk memperbarui label nodegroup, tetapi dapat dengan mudah dicapai menggunakankubectl, misalnya:

kubectl label nodes -l alpha.eksctl.io/nodegroup-name=ng-1 new-label=foo

Akses SSH

Anda dapat mengaktifkan akses SSH untuk grup node dengan mengonfigurasi salah satupublicKey, publicKeyName dan publicKeyPath dalam konfigurasi nodegroup Anda. Atau, Anda dapat menggunakan AWS Systems Manager (SSM) untuk SSH ke node, dengan mengonfigurasi nodegroup dengan: enableSsm

managedNodeGroups: - name: ng-1 instanceType: m5.large desiredCapacity: 1 ssh: # import public key from file publicKeyPath: ~/.ssh/id_rsa_tests.pub - name: ng-2 instanceType: m5.large desiredCapacity: 1 ssh: # use existing EC2 key publicKeyName: ec2_dev_key - name: ng-3 instanceType: m5.large desiredCapacity: 1 ssh: # import inline public key publicKey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDqZEdzvHnK/GVP8nLngRHu/GDi/3PeES7+Bx6l3koXn/Oi/UmM9/jcW5XGziZ/oe1cPJ777eZV7muEvXg5ZMQBrYxUtYCdvd8Rt6DIoSqDLsIPqbuuNlQoBHq/PU2IjpWnp/wrJQXMk94IIrGjY8QHfCnpuMENCucVaifgAhwyeyuO5KiqUmD8E0RmcsotHKBV9X8H5eqLXd8zMQaPl+Ub7j5PG+9KftQu0F/QhdFvpSLsHaxvBzA5nhIltjkaFcwGQnD1rpCM3+UnQE7Izoa5Yt1xoUWRwnF+L2TKovW7+bYQ1kxsuuiX149jXTCJDVjkYCqi7HkrXYqcC1sbsror someuser@hostname" - name: ng-4 instanceType: m5.large desiredCapacity: 1 ssh: # enable SSH using SSM enableSsm: true