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
--includeatau--excludeditentukan semuanya disertakan -
jika hanya
--includeditentukan, hanya grup simpul yang cocok dengan glob tersebut yang akan disertakan -
jika hanya
--excludeditentukan, semua kelompok simpul yang tidak cocok dengan glob tersebut disertakan -
jika keduanya ditentukan maka
--excludeaturan 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