Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Grup nodegroup yang dikelola EKS
Amazon EKS managed nodegroups adalah fitur yang mengotomatiskan penyediaan dan pengelolaan siklus hidup node (instanceEC2 ) untuk klaster Amazon EKS Kubernetes. Pelanggan dapat menyediakan grup node yang dioptimalkan untuk klaster mereka dan EKS akan memperbarui node mereka dengan versi Kubernetes dan OS host terbaru.
Grup node terkelola EKS adalah grup penskalaan otomatis dan EC2 instance terkait yang dikelola oleh AWS untuk kluster Amazon EKS. Setiap grup node menggunakan Amazon Amazon Linux 2 AMI yang dioptimalkan Amazon EKS. Amazon EKS memudahkan penerapan perbaikan bug dan patch keamanan ke node, serta memperbaruinya ke versi Kubernetes terbaru. Setiap grup node meluncurkan grup penskalaan otomatis untuk klaster Anda, yang dapat menjangkau beberapa zona ketersediaan dan subnet AWS VPC untuk ketersediaan tinggi.
Dukungan Template Peluncuran BARU untuk nodegroup terkelola
catatan
Istilah “nodegroup tidak terkelola” telah digunakan untuk merujuk pada nodegroup yang telah didukung eksctl sejak awal (diwakili melalui bidang). nodeGroups
ClusterConfig
File terus menggunakan nodeGroups
bidang untuk mendefinisikan nodegroup yang tidak dikelola, dan nodegroup terkelola didefinisikan dengan bidang. managedNodeGroups
Membuat nodegroup terkelola
$ eksctl create nodegroup
Cluster baru
Untuk membuat cluster baru dengan nodegroup terkelola, jalankan
eksctl create cluster
Untuk membuat beberapa nodegroup terkelola dan memiliki kontrol lebih besar atas konfigurasi, file konfigurasi dapat digunakan.
catatan
Nodegroup terkelola tidak memiliki paritas fitur lengkap dengan nodegroup 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 nodegroup terkelola dan tidak terkelola. Nodegroup yang tidak dikelola tidak muncul di konsol AWS EKS tetapi eksctl get nodegroup
akan mencantumkan kedua jenis nodegroup.
# 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
Dukungan BARU 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 untuk tipe contoh seperti keluarga Hpc6
Cluster yang ada
eksctl create nodegroup --managed
Tip: jika Anda menggunakan ClusterConfig
file untuk mendeskripsikan seluruh cluster Anda, jelaskan grup node terkelola baru Anda di managedNodeGroups
bidang dan jalankan:
eksctl create nodegroup --config-file=YOUR_CLUSTER.yaml
Memutakhirkan nodegroup terkelola
Anda dapat memperbarui nodegroup ke versi rilis AMI terbaru yang dioptimalkan EKS untuk tipe 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 tipe 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 cluster versi Kubernetes. 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 memutakhirkan ke versi rilis AMI tertentu alih-alih versi terbaru, teruskan--release-version
:
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster --release-version=1.19.6-20210310
catatan
Jika node terkelola disebarkan menggunakan kustom AMIs, alur kerja berikut harus diikuti untuk menerapkan versi baru AMI kustom.
-
penyebaran awal nodegroup harus dilakukan menggunakan template peluncuran. misalnya
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 kustom (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. misalnya
eksctl upgrade nodegroup --name nodegroup-name --cluster cluster-name --launch-template-version new-template-version
Menangani peningkatan paralel untuk node
Beberapa node terkelola dapat ditingkatkan secara bersamaan. Untuk mengonfigurasi peningkatan paralel, tentukan nodegroup saat membuat nodegroup. updateConfig
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 upgrade dengan menentukan ini di bidang. maxUnavailable
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 nodegroup terkelola
eksctl
memungkinkan memperbarui UpdateConfigbagian dari nodegroup terkelola. Bagian ini mendefinisikan dua bidang. MaxUnavailable
danMaxUnavailablePercentage
. Nodegroup Anda tidak terpengaruh selama pembaruan, sehingga waktu henti seharusnya tidak diharapkan.
Perintah update nodegroup
harus digunakan dengan file konfigurasi menggunakan --config-file
bendera. 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 EKS API dan konsol. 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 menghapus 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 disetel pada nodegroup:
eksctl get labels --cluster managed-cluster --nodegroup managed-ng-1
Penskalaan Grup Node Terkelola
eksctl scale nodegroup
juga mendukung nodegroup terkelola. Sintaks untuk penskalaan nodegroup terkelola atau tidak terkelola adalah sama.
eksctl scale nodegroup --name=managed-ng-1 --cluster=managed-cluster --nodes=4 --nodes-min=3 --nodes-max=5