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 da Amazon EKS sono una funzionalità che automatizza il provisioning e la gestione del ciclo di vita dei nodi (istanze EC2) per i cluster Amazon EKS Kubernetes. I clienti possono fornire gruppi di nodi ottimizzati per i propri cluster ed EKS manterrà i propri nodi aggiornati con le ultime versioni di Kubernetes e del sistema operativo host.
Un gruppo di nodi gestiti da EKS è un gruppo di scalabilità automatica e istanze EC2 associate gestiti da AWS per un cluster Amazon EKS. Ogni gruppo di nodi utilizza l'AMI Amazon Amazon EKS-optimized Linux 2. 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 lancia un gruppo di scalabilità automatica per il cluster, che può estendersi su più zone di disponibilità e sottoreti di AWS VPC per un'elevata disponibilità.
NUOVO supporto per Launch Template per gruppi di nodi gestiti
Nota
Il termine «nodegroup non gestiti» è stato usato per riferirsi ai gruppi di nodi supportati da eksctl 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 nodegroup 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
Un altro esempio di file di configurazione per la creazione di un nodegroup gestito può essere trovato qui. https://github.com/eksctl-io/eksctl/blob/main/examples/15-managed-nodes.yaml
È possibile avere un cluster con gruppi di nodi gestiti e non gestiti. I nodegroup non gestiti non vengono visualizzati nella console AWS EKS ma eksctl get nodegroup elencheranno entrambi i tipi di 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
NUOVO supporto per AMI personalizzate, gruppi di sicurezza,,,,instancePrefix,instanceName,ebsOptimized,,volumeType,volumeName,volumeEncrypted,volumeKmsKeyID, e volumeIOPS maxPodsPerNode preBootstrapCommands overrideBootstrapCommand 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 di eksctl richiede la specificazione di due) assicurati di aggiungere la zona di disponibilità alla richiesta del 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 per tipi di istanza come la famiglia Hpc6
Cluster esistenti
eksctl create nodegroup --managed
Suggerimento: se stai usando un ClusterConfig file per descrivere l'intero cluster, descrivi il tuo 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 AMI per il tipo di EKS-optimized AMI che stai utilizzando in qualsiasi momento.
Se il tuo nodegroup è la stessa versione Kubernetes del cluster, puoi eseguire l'aggiornamento all'ultima versione di AMI per quella versione Kubernetes del tipo di AMI che stai utilizzando. Se il tuo nodegroup è la versione Kubernetes precedente alla versione Kubernetes del cluster, puoi aggiornare il nodegroup all'ultima versione AMI che corrisponde alla versione Kubernetes del nodegroup o eseguire l'aggiornamento all'ultima versione di rilascio AMI che corrisponde alla versione Kubernetes del cluster. Non è possibile ripristinare un nodegroup a una versione precedente di Kubernetes.
Per aggiornare un nodegroup gestito all'ultima versione di rilascio AMI:
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster
Il nodegroup può essere aggiornato all'ultima versione AMI per una versione 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 AMI personalizzate, è 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 lancio. 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 avvio 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 valore updateConfig di un nodegroup durante la creazione del nodegroup. Un esempio updateConfig può essere trovato qui. https://github.com/eksctl-io/eksctl/blob/main/examples/15-managed-nodes.yaml
Per evitare tempi di inattività dei carichi di lavoro dovuti all'aggiornamento di più nodi contemporaneamente, puoi limitare il numero di nodi che possono diventare non disponibili durante un aggiornamento specificandolo nel campo 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 e maxUnavailablePercentage non può essere utilizzato contemporaneamente.
Questa funzionalità è disponibile solo per i nodi gestiti.
Aggiornamento dei gruppi di nodi gestiti
eksctlconsente di aggiornare la UpdateConfig sezione di un nodegroup gestito. Questa sezione definisce due campi. MaxUnavailableeMaxUnavailablePercentage. I 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 salute di Nodegroup
EKS Managed Nodegroups verifica automaticamente la configurazione del nodegroup e dei nodi per eventuali problemi di integrità e li segnala tramite l'API e la console EKS. Per visualizzare i problemi di integrità 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 del cluster o del nodegroup.
Per impostare nuove etichette o aggiornare le etichette esistenti su un nodegroup:
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 nodegroup:
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 nodegroup:
eksctl get labels --cluster managed-cluster --nodegroup managed-ng-1
Ridimensionamento dei gruppi di nodi gestiti
eksctl scale nodegroupsupporta anche i gruppi di nodi gestiti. La sintassi per ridimensionare un nodegroup gestito o non gestito è la stessa.
eksctl scale nodegroup --name=managed-ng-1 --cluster=managed-cluster --nodes=4 --nodes-min=3 --nodes-max=5