Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Grup node yang dikelola EKS
Amazon EKS managed nodegroups adalah fitur yang mengotomatiskan penyediaan dan manajemen siklus hidup node (instans EC2) untuk cluster Amazon EKS Kubernetes. Pelanggan dapat menyediakan grup node yang dioptimalkan untuk cluster mereka dan EKS akan menjaga node mereka tetap up to date dengan versi Kubernetes dan OS host terbaru.
Grup node terkelola EKS adalah grup penskalaan otomatis dan instans EC2 terkait yang dikelola oleh AWS untuk cluster Amazon EKS. Setiap grup node menggunakan Amazon EKS-optimized Amazon Linux 2 AMI. Amazon EKS memudahkan untuk menerapkan perbaikan bug dan patch keamanan ke node, serta memperbaruinya ke versi Kubernetes terbaru. Setiap grup node meluncurkan grup penskalaan otomatis untuk cluster Anda, yang dapat menjangkau beberapa zona ketersediaan AWS VPC dan subnet untuk ketersediaan tinggi.
Dukungan Template Peluncuran BARU untuk kelompok simpul terkelola
catatan
Istilah “grup nodegroup yang tidak dikelola” telah digunakan untuk merujuk ke grup node yang telah didukung eksctl sejak awal (diwakili melalui bidang). nodeGroups ClusterConfigFile terus menggunakan nodeGroups bidang untuk mendefinisikan grup simpul yang tidak dikelola, dan kelompok simpul terkelola ditentukan dengan bidang tersebut. managedNodeGroups
Membuat grup simpul terkelola
$ eksctl create nodegroup
Cluster baru
Untuk membuat cluster baru dengan nodegroup terkelola, jalankan
eksctl create cluster
Untuk membuat beberapa grup node terkelola dan memiliki kontrol lebih besar atas konfigurasi, file konfigurasi dapat digunakan.
catatan
Grup node terkelola tidak memiliki paritas fitur lengkap dengan grup simpul yang tidak dikelola.
# cluster.yaml # A cluster with two managed nodegroups --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: managed-cluster region: us-west-2 managedNodeGroups: - name: managed-ng-1 minSize: 2 maxSize: 4 desiredCapacity: 3 volumeSize: 20 ssh: allow: true publicKeyPath: ~/.ssh/ec2_id_rsa.pub # new feature for restricting SSH access to certain AWS security group IDs sourceSecurityGroupIds: ["sg-00241fbb12c607007"] labels: {role: worker} tags: nodegroup-role: worker iam: withAddonPolicies: externalDNS: true certManager: true - name: managed-ng-2 instanceType: t2.large minSize: 2 maxSize: 3
Contoh lain dari file konfigurasi untuk membuat nodegroup terkelola dapat ditemukan di sini.
Dimungkinkan untuk memiliki cluster dengan grup node terkelola dan tidak dikelola. Grup node yang tidak dikelola tidak muncul di konsol AWS EKS tetapi eksctl get nodegroup akan mencantumkan kedua jenis grup simpul.
# cluster.yaml # A cluster with an unmanaged nodegroup and two managed nodegroups. --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: managed-cluster region: us-west-2 nodeGroups: - name: ng-1 minSize: 2 managedNodeGroups: - name: managed-ng-1 minSize: 2 maxSize: 4 desiredCapacity: 3 volumeSize: 20 ssh: allow: true publicKeyPath: ~/.ssh/ec2_id_rsa.pub # new feature for restricting SSH access to certain AWS security group IDs sourceSecurityGroupIds: ["sg-00241fbb12c607007"] labels: {role: worker} tags: nodegroup-role: worker iam: withAddonPolicies: externalDNS: true certManager: true - name: managed-ng-2 instanceType: t2.large privateNetworking: true minSize: 2 maxSize: 3
BARU Dukungan untuk AMI kustom, grup keamananinstancePrefix,instanceName,ebsOptimized,volumeType,volumeName,volumeEncrypted,volumeKmsKeyID,volumeIOPS,maxPodsPerNode,preBootstrapCommands,overrideBootstrapCommand, dan disableIMDSv1
# cluster.yaml # A cluster with a managed nodegroup with customization. --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: managed-cluster region: us-west-2 managedNodeGroups: - name: custom-ng ami: ami-0e124de4755b2734d securityGroups: attachIDs: ["sg-1234"] maxPodsPerNode: 80 ssh: allow: true volumeSize: 100 volumeName: /dev/xvda volumeEncrypted: true # defaults to true, which enforces the use of IMDSv2 tokens disableIMDSv1: false overrideBootstrapCommand: | #!/bin/bash /etc/eks/bootstrap.sh managed-cluster --kubelet-extra-args '--node-labels=eks.amazonaws.com/nodegroup=custom-ng,eks.amazonaws.com/nodegroup-image=ami-0e124de4755b2734d'
Jika Anda meminta jenis instance yang hanya tersedia di satu zona (dan konfigurasi eksctl memerlukan spesifikasi dua) pastikan untuk menambahkan zona ketersediaan ke permintaan grup node Anda:
# cluster.yaml # A cluster with a managed nodegroup with "availabilityZones" --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: flux-cluster region: us-east-2 version: "1.23" availabilityZones: ["us-east-2b", "us-east-2c"] managedNodeGroups: - name: workers instanceType: hpc6a.48xlarge minSize: 64 maxSize: 64 labels: { "fluxoperator": "true" } availabilityZones: ["us-east-2b"] efaEnabled: true placement: groupName: eks-efa-testing
Ini bisa benar misalnya tipe seperti keluarga Hpc6
Cluster yang ada
eksctl create nodegroup --managed
Tip: jika Anda menggunakan ClusterConfig file untuk menggambarkan seluruh cluster Anda, jelaskan grup node terkelola baru Anda di managedNodeGroups lapangan dan jalankan:
eksctl create nodegroup --config-file=YOUR_CLUSTER.yaml
Meningkatkan kelompok simpul terkelola
Anda dapat memperbarui nodegroup ke versi rilis EKS-optimized AMI terbaru untuk jenis AMI yang Anda gunakan kapan saja.
Jika nodegroup Anda adalah versi Kubernetes yang sama dengan cluster, Anda dapat memperbarui ke versi rilis AMI terbaru untuk versi Kubernetes dari jenis AMI yang Anda gunakan. Jika nodegroup Anda adalah versi Kubernetes sebelumnya dari versi Kubernetes cluster, Anda dapat memperbarui nodegroup ke versi rilis AMI terbaru yang cocok dengan versi Kubernetes nodegroup, atau memperbarui ke versi rilis AMI terbaru yang cocok dengan versi Kubernetes cluster. Anda tidak dapat memutar kembali nodegroup ke versi Kubernetes sebelumnya.
Untuk memutakhirkan nodegroup terkelola ke versi rilis AMI terbaru:
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster
Nodegroup dapat ditingkatkan ke rilis AMI terbaru untuk versi Kubernetes tertentu menggunakan:
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster --kubernetes-version=<kubernetes-version>
Untuk meningkatkan ke versi rilis AMI tertentu alih-alih versi terbaru, lewati--release-version:
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster --release-version=1.19.6-20210310
catatan
Jika node terkelola digunakan menggunakan AMI khusus, alur kerja berikut harus diikuti untuk menerapkan versi baru AMI kustom.
-
penyebaran awal nodegroup harus dilakukan menggunakan template peluncuran. mis.
managedNodeGroups: - name: launch-template-ng launchTemplate: id: lt-1234 version: "2" #optional (uses the default version of the launch template if unspecified) -
buat versi baru AMI khusus (menggunakan konsol AWS EKS).
-
buat versi template peluncuran baru dengan ID AMI baru (menggunakan konsol AWS EKS).
-
tingkatkan node ke versi baru dari template peluncuran. mis.
eksctl upgrade nodegroup --name nodegroup-name --cluster cluster-name --launch-template-version new-template-version
Menangani upgrade paralel untuk node
Beberapa node yang dikelola dapat ditingkatkan secara bersamaan. Untuk mengkonfigurasi upgrade paralel, tentukan updateConfig nodegroup saat membuat nodegroup. Contohnya updateConfig dapat ditemukan di sini
Untuk menghindari downtime pada beban kerja Anda karena memutakhirkan beberapa node sekaligus, Anda dapat membatasi jumlah node yang dapat menjadi tidak tersedia selama peningkatan dengan menentukan ini di maxUnavailable bidang. updateConfig Atau, gunakanmaxUnavailablePercentage, yang mendefinisikan jumlah maksimum node yang tidak tersedia sebagai persentase dari jumlah total node.
Perhatikan bahwa maxUnavailable tidak boleh lebih tinggi darimaxSize. Juga, maxUnavailable dan maxUnavailablePercentage tidak dapat digunakan secara bersamaan.
Fitur ini hanya tersedia untuk node terkelola.
Memperbarui grup simpul terkelola
eksctlmemungkinkan memperbarui UpdateConfig bagian dari grup nodegroup yang dikelola. Bagian ini mendefinisikan dua bidang. MaxUnavailabledanMaxUnavailablePercentage. Grup node Anda tidak terpengaruh selama pembaruan, sehingga waktu henti seharusnya tidak diharapkan.
Perintah update nodegroup harus digunakan dengan file konfigurasi menggunakan ben --config-file dera. Nodegroup harus berisi bagian. nodeGroup.updateConfig Informasi lebih lanjut dapat ditemukan di sini
Masalah Kesehatan Nodegroup
EKS Managed Nodegroups secara otomatis memeriksa konfigurasi nodegroup dan node Anda untuk masalah kesehatan dan melaporkannya melalui API dan konsol EKS. Untuk melihat masalah kesehatan untuk nodegroup:
eksctl utils nodegroup-health --name=managed-ng-1 --cluster=managed-cluster
Mengelola Label
EKS Managed Nodegroups mendukung melampirkan label yang diterapkan ke node Kubernetes di nodegroup. Ini ditentukan melalui labels bidang di eksctl selama pembuatan cluster atau nodegroup.
Untuk mengatur label baru atau memperbarui label yang ada pada nodegroup:
eksctl set labels --cluster managed-cluster --nodegroup managed-ng-1 --labels kubernetes.io/managed-by=eks,kubernetes.io/role=worker
Untuk membatalkan atau menghapus label dari nodegroup:
eksctl unset labels --cluster managed-cluster --nodegroup managed-ng-1 --labels kubernetes.io/managed-by,kubernetes.io/role
Untuk melihat semua label yang ditetapkan pada nodegroup:
eksctl get labels --cluster managed-cluster --nodegroup managed-ng-1
Menskalakan Grup Node Terkelola
eksctl scale nodegroupjuga mendukung kelompok node terkelola. Sintaks untuk menskalakan grup nodegroup yang dikelola atau tidak dikelola adalah sama.
eksctl scale nodegroup --name=managed-ng-1 --cluster=managed-cluster --nodes=4 --nodes-min=3 --nodes-max=5