Grup nodegroup yang dikelola EKS - Panduan Pengguna Eksctl

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 ClusterConfigFile 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 yang hanya tersedia di satu zona.

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

eksctlmemungkinkan memperbarui UpdateConfigbagian dari nodegroup terkelola. Bagian ini mendefinisikan dua bidang. MaxUnavailabledanMaxUnavailablePercentage. 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 nodegroupjuga 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

Informasi lebih lanjut