Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Gruppi di nodi gestiti da EKS
I gruppi di nodi gestiti di Amazon EKS sono una funzionalità che automatizza il provisioning e la gestione del ciclo di vita dei nodi (istanzeEC2 ) per i cluster Amazon EKS Kubernetes. I clienti possono fornire gruppi di nodi ottimizzati per i propri cluster ed EKS manterrà i nodi aggiornati con le ultime versioni di Kubernetes e del sistema operativo host.
Un gruppo di nodi gestiti EKS è un gruppo con scalabilità automatica e EC2 istanze associate gestite da AWS per un cluster Amazon EKS. Ogni gruppo di nodi utilizza l'AMI Amazon Linux 2 ottimizzata per Amazon EKS. Amazon EKS semplifica l'applicazione di correzioni di bug e patch di sicurezza ai nodi, nonché l'aggiornamento alle versioni più recenti di Kubernetes. Ogni gruppo di nodi avvia un gruppo di scalabilità automatica per il cluster, che può estendersi su più zone di disponibilità e sottoreti AWS VPC per un'elevata disponibilità.
NOVITÀ Supporto di Launch Template per gruppi di nodi gestiti
Nota
Il termine «gruppi di nodi non gestiti» è stato usato per riferirsi ai gruppi di nodi che eksctl ha supportato sin dall'inizio (rappresentati tramite il campo). nodeGroups
Il ClusterConfig
file continua a utilizzare il nodeGroups
campo per definire i gruppi di nodi non gestiti e i gruppi di nodi gestiti vengono definiti con il campo. managedNodeGroups
Creazione di gruppi di nodi gestiti
$ eksctl create nodegroup
Nuovi cluster
Per creare un nuovo cluster con un gruppo di nodi gestito, esegui
eksctl create cluster
Per creare più gruppi di nodi gestiti e avere un maggiore controllo sulla configurazione, è possibile utilizzare un file di configurazione.
Nota
I gruppi di nodi gestiti non hanno una parità di funzionalità completa con i gruppi di nodi non gestiti.
# 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
È possibile avere un cluster con gruppi di nodi gestiti e non gestiti. I gruppi di nodi non gestiti non vengono visualizzati nella console AWS EKS ma eksctl get nodegroup
elencheranno entrambi i tipi di gruppi di nodi.
# 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
NUOVO Supporto per AMI personalizzate, gruppi di sicurezza instancePrefix
instanceName
,ebsOptimized
,volumeType
,volumeName
,volumeEncrypted
,volumeKmsKeyID
,volumeIOPS
,maxPodsPerNode
,preBootstrapCommands
,overrideBootstrapCommand
, e 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'
Se stai richiedendo un tipo di istanza disponibile solo in una zona (e la configurazione eksctl richiede la specificazione di due) assicurati di aggiungere la zona di disponibilità alla richiesta del tuo gruppo di nodi:
# 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
Questo può essere vero, ad esempio, per tipi come la famiglia Hpc6
Cluster esistenti
eksctl create nodegroup --managed
Suggerimento: se utilizzi un ClusterConfig
file per descrivere l'intero cluster, descrivi il nuovo gruppo di nodi gestiti nel managedNodeGroups
campo ed esegui:
eksctl create nodegroup --config-file=YOUR_CLUSTER.yaml
Aggiornamento dei gruppi di nodi gestiti
Puoi aggiornare un nodegroup all'ultima versione di release AMI ottimizzata per EKS per il tipo di AMI che stai utilizzando in qualsiasi momento.
Se il tuo nodegroup è la stessa versione di Kubernetes del cluster, puoi eseguire l'aggiornamento all'ultima versione dell'AMI per quella versione di Kubernetes del tipo di AMI che stai utilizzando. Se il tuo nodegroup è la versione di Kubernetes precedente alla versione Kubernetes del cluster, puoi aggiornare il nodegroup all'ultima versione dell'AMI che corrisponde alla versione Kubernetes del nodegroup o eseguire l'aggiornamento all'ultima versione dell'AMI che corrisponde alla versione Kubernetes del cluster. Non puoi ripristinare un nodegroup a una versione precedente di Kubernetes.
Per aggiornare un nodegroup gestito all'ultima versione dell'AMI release:
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster
Il nodegroup può essere aggiornato all'ultima versione AMI per una versione di Kubernetes specificata utilizzando:
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster --kubernetes-version=<kubernetes-version>
Per eseguire l'aggiornamento a una versione di rilascio AMI specifica anziché alla versione più recente, passa--release-version
:
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster --release-version=1.19.6-20210310
Nota
Se i nodi gestiti vengono distribuiti utilizzando l'AMI personalizzata AMIs, è necessario seguire il seguente flusso di lavoro per distribuire una nuova versione dell'AMI personalizzata.
-
la distribuzione iniziale del nodegroup deve essere eseguita utilizzando un modello di avvio. ad es.
managedNodeGroups: - name: launch-template-ng launchTemplate: id: lt-1234 version: "2" #optional (uses the default version of the launch template if unspecified)
-
crea una nuova versione dell'AMI personalizzata (utilizzando la console AWS EKS).
-
crea una nuova versione del modello di lancio con il nuovo ID AMI (utilizzando la console AWS EKS).
-
aggiorna i nodi alla nuova versione del modello di lancio. ad es.
eksctl upgrade nodegroup --name nodegroup-name --cluster cluster-name --launch-template-version new-template-version
Gestione degli aggiornamenti paralleli per i nodi
È possibile aggiornare più nodi gestiti contemporaneamente. Per configurare gli aggiornamenti paralleli, definisci il nodegroup durante la creazione updateConfig
del nodegroup. Un esempio updateConfig
può essere trovato qui.
Per evitare interruzioni dei carichi di lavoro dovute all'aggiornamento di più nodi contemporaneamente, puoi limitare il numero di nodi che possono diventare non disponibili durante un aggiornamento specificandolo nel campo di un. maxUnavailable
updateConfig
In alternativa, usamaxUnavailablePercentage
, che definisce il numero massimo di nodi non disponibili come percentuale del numero totale di nodi.
Nota che maxUnavailable
non può essere superiore amaxSize
. Inoltre, maxUnavailable
maxUnavailablePercentage
non può essere utilizzato contemporaneamente.
Questa funzionalità è disponibile solo per i nodi gestiti.
Aggiornamento dei gruppi di nodi gestiti
eksctl
consente di aggiornare la UpdateConfigsezione di un gruppo di nodi gestito. Questa sezione definisce due campi. MaxUnavailable
eMaxUnavailablePercentage
. I tuoi gruppi di nodi non vengono modificati durante l'aggiornamento, quindi non dovrebbero essere previsti tempi di inattività.
Il comando update nodegroup
deve essere usato con un file di configurazione usando il flag. --config-file
Il nodegroup deve contenere una sezione. nodeGroup.updateConfig
Ulteriori informazioni possono essere trovate qui.
Problemi di Nodegroup Health
EKS Managed Nodegroups controlla automaticamente la configurazione del gruppo di nodi e dei nodi per rilevare eventuali problemi di salute e li segnala tramite l'API e la console EKS. Per visualizzare i problemi di salute di un nodegroup:
eksctl utils nodegroup-health --name=managed-ng-1 --cluster=managed-cluster
Gestione delle etichette
EKS Managed Nodegroups supporta l'aggiunta di etichette applicate ai nodi Kubernetes nel nodegroup. Questo viene specificato tramite il labels
campo in eksctl durante la creazione di cluster o gruppi di nodi.
Per impostare nuove etichette o aggiornare le etichette esistenti su un gruppo di nodi:
eksctl set labels --cluster managed-cluster --nodegroup managed-ng-1 --labels kubernetes.io/managed-by=eks,kubernetes.io/role=worker
Per annullare l'impostazione o rimuovere le etichette da un gruppo di nodi:
eksctl unset labels --cluster managed-cluster --nodegroup managed-ng-1 --labels kubernetes.io/managed-by,kubernetes.io/role
Per visualizzare tutte le etichette impostate su un gruppo di nodi:
eksctl get labels --cluster managed-cluster --nodegroup managed-ng-1
Ridimensionamento dei gruppi di nodi gestiti
eksctl scale nodegroup
supporta anche i gruppi di nodi gestiti. La sintassi per scalare un gruppo di nodi gestito o non gestito è la stessa.
eksctl scale nodegroup --name=managed-ng-1 --cluster=managed-cluster --nodes=4 --nodes-min=3 --nodes-max=5