Crea nodi Amazon Linux su AWS Outposts - Amazon EKS

Aiutaci a migliorare questa pagina

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à.

Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.

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à.

Crea nodi Amazon Linux su AWS Outposts

Questo argomento descrive come avviare gruppi Auto Scaling di nodi Amazon Linux su un Outpost che si registra nel cluster Amazon. EKS Il cluster può trovarsi sul AWS cloud o su un Outpost.

  • Un Outpost esistente. Per ulteriori informazioni, consulta What is AWS Outposts.

  • Un EKS cluster Amazon esistente. Per distribuire un cluster sul AWS cloud, consultaCrea un EKS cluster Amazon. Per implementare un cluster su un Outpost, consulta la sezione Crea EKS cluster Amazon locali su AWS Outposts per un'elevata disponibilità.

  • Supponiamo di creare i nodi in un cluster sul AWS Cloud e di disporre di sottoreti nella AWS regione in cui sono abilitati Outposts AWS , Wavelength AWS o Local Zones. AWS Quindi, le sottoreti non devono essere state passate al momento della creazione del cluster. Se stai creando i nodi in un cluster su un Outpost, devi aver inserito una sottorete Outpost durante la creazione del cluster.

  • (Consigliato per i cluster sul cloud) Il AWS Amazon VPC CNI plugin for Kubernetes componente aggiuntivo configurato con IAM un proprio ruolo a cui è associata la IAM politica necessaria. Per ulteriori informazioni, consulta Configura il VPC CNI plug-in Amazon da utilizzare IRSA. I cluster locali non supportano i IAM ruoli per gli account di servizio.

Puoi creare un gruppo di nodi Amazon Linux autogestito con eksctl o AWS Management Console (con un AWS CloudFormation modello). Puoi anche utilizzare Terraform.

Puoi creare un cluster locale con i seguenti strumenti descritti in questa pagina:

eksctl

Per avviare nodi Linux autogestiti utilizzando `eksctl

  1. Installa la versione 0.199.0 o successiva dello strumento da riga di eksctl comando installato sul tuo dispositivo o AWS CloudShell. Per l'installazione o l'aggiornamento di eksctl, consulta la sezione Installation nella documentazione di eksctl.

  2. Se il tuo cluster è sul AWS cloud e la CNIpolicy gestita di Amazon EKS _ IAM _Policy è associata al IAMruolo del tuo EKS nodo Amazon, ti consigliamo di assegnarlo a un IAM ruolo che associ al Kubernetes aws-nodeaccount di servizio invece. Per ulteriori informazioni, consulta Configura il VPC CNI plug-in Amazon da utilizzare IRSA. Se il cluster è sull'Outpost, la policy deve essere collegata al ruolo del tuo nodo.

  3. Il comando seguente crea un gruppo di nodi in un cluster esistente. Il cluster deve essere stato creato utilizzando eksctl. Sostituisci al-nodes con un nome per il gruppo di nodi. Il nome del gruppo di nodi non può superare i 63 caratteri. Deve iniziare con una lettera o un numero, ma può anche includere trattini e caratteri di sottolineatura. Sostituisci my-cluster con il nome del cluster. Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfanumerico e non può superare i 100 caratteri. Il nome deve essere univoco all'interno della AWS regione e AWS dell'account in cui stai creando il cluster. Se il cluster si trova su un Outpost, sostituisci id con l'ID di una sottorete dell'Outpost. Se il cluster esiste nel AWS cloud, sostituiscilo id con l'ID di una sottorete che non hai specificato al momento della creazione del cluster. Sostituisci instance-type con un tipo di istanza supportato sul tuo Outpost. Sostituisci i example values rimanenti con i valori in tuo possesso. I nodi vengono creati con lo stesso Kubernetes versione come piano di controllo, per impostazione predefinita.

    Sostituisci instance-type con un tipo di istanza disponibile sul tuo Outpost.

    Sostituiscilo my-key con il nome della tua coppia di EC2 chiavi Amazon o della tua chiave pubblica. Questa chiave viene utilizzata per SSH accedere ai nodi dopo il loro avvio. Se non disponi già di una coppia di EC2 chiavi Amazon, puoi crearne una in AWS Management Console. Per ulteriori informazioni, consulta le coppie di EC2 chiavi Amazon nella Amazon EC2 User Guide.

    Crea il tuo gruppo di nodi con il comando seguente.

    eksctl create nodegroup --cluster my-cluster --name al-nodes --node-type instance-type \ --nodes 3 --nodes-min 1 --nodes-max 4 --managed=false --node-volume-type gp2 --subnet-ids subnet-id

    Se il tuo cluster è distribuito sul AWS cloud:

    Per un elenco completo di tutte le opzioni e le impostazioni predefinite disponibili, consulta Outposts AWS Support nella documentazione. eksctl

  4. (Facoltativo) Implementa un'applicazione di esempio per testare il cluster e Linux nodi.

AWS Management Console

Fase 1: Avvio di nodi Linux autogestiti utilizzando ` AWS Management Console

  1. Scarica l'ultima versione del AWS CloudFormation modello.

    curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2022-12-23/amazon-eks-nodegroup.yaml
  2. Apri la AWS CloudFormation console.

  3. Scegli Crea stack e quindi seleziona Con nuove risorse (standard).

  4. In Specifica modello, seleziona Carica un file di modello e Scegli file. Seleziona il file amazon-eks-nodegroup.yaml scaricato in un passaggio precedente, quindi seleziona Next (Successivo).

  5. Nella pagina Specifica i dettagli dello stack, immetti i parametri seguenti e scegli Successivo:

    • Nome dello stack: scegli un nome per lo stack. AWS CloudFormation Ad esempio, è possibile chiamarlo al-nodes. Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfanumerico e non può superare i 100 caratteri. Il nome deve essere univoco all'interno della AWS regione e AWS dell'account in cui stai creando il cluster.

    • ClusterName: inserisci il nome del cluster. Se questo nome non corrisponde al nome del cluster, i nodi non possono unirsi al cluster.

    • ClusterControlPlaneSecurityGroup: Scegli il SecurityGroupsvalore dall' AWS CloudFormation output che hai generato quando hai creato il tuo VPC.

      Nella procedura seguente viene illustrata un'operazione per recuperare il gruppo applicabile.

      1. Apri la EKSconsole Amazon.

      2. Scegli il nome del cluster.

      3. Scegli la scheda Reti.

      4. Usa il valore dei gruppi di sicurezza aggiuntivi come riferimento quando selezioni dall'elenco ClusterControlPlaneSecurityGroupa discesa.

    • NodeGroupName: inserisci un nome per il tuo gruppo di nodi. Questo nome può essere usato in seguito per identificare il gruppo di nodi Auto Scaling creato per i tuoi nodi.

    • NodeAutoScalingGroupMinSize: Inserisci il numero minimo di nodi su cui il gruppo Auto Scaling del nodo può scalare.

    • NodeAutoScalingGroupDesiredCapacity: Inserisci il numero di nodi desiderato su cui scalare quando viene creato lo stack.

    • NodeAutoScalingGroupMaxSize: Inserisci il numero massimo di nodi su cui il gruppo Auto Scaling del nodo può scalare orizzontalmente.

    • NodeInstanceType: scegli un tipo di istanza per i tuoi nodi. Se il cluster è in esecuzione sul AWS cloud, per ulteriori informazioni, consultaScegli un tipo di istanza Amazon EC2 node ottimale. Se il cluster è in esecuzione su un Outpost, puoi selezionare solo un tipo di istanza disponibile sul tuo Outpost.

    • NodeImageIdSSMParam: precompilato con il parametro Amazon EC2 Systems Manager di un Amazon recente EKS ottimizzato AMI per una variabile Kubernetes versione. Usare un altro Kubernetes versione secondaria supportata da AmazonEKS, 1.XX sostituiscila con una versione supportata diversa. Ti consigliamo di specificare lo stesso Kubernetes versione del tuo cluster.

      Per utilizzare un accelerato EKS ottimizzato per AmazonAMI, sostituiscilo amazon-linux-2 conamazon-linux-2-gpu. Per utilizzare un Arm EKS ottimizzato per AmazonAMI, amazon-linux-2 sostituiscilo conamazon-linux-2-arm64.

      Nota

      I EKS nodi Amazon AMIs sono basati su Amazon Linux. Puoi tenere traccia degli eventi di sicurezza o privacy per Amazon Linux nel centro di sicurezza Amazon Linux scegliendo la scheda relativa alla versione desiderata. Puoi anche iscriverti al RSS feed applicabile. Gli eventi di sicurezza e privacy includono una panoramica del problema, quali sono i pacchetti interessati e come aggiornare le istanze per risolvere il problema.

    • NodeImageId: (Facoltativo) Se utilizzi il tuo account personalizzato AMI (anziché uno EKS ottimizzato per AmazonAMI), inserisci un AMI ID del nodo per la tua AWS regione. Se specifichi un valore qui, sostituisce tutti i valori nel NodeImageIdSSMParamcampo.

    • NodeVolumeSize: Specificate la dimensione del volume root per i nodi, in GiB.

    • NodeVolumeType: Specificate un tipo di volume root per i nodi.

    • KeyName: inserisci il nome di una coppia di EC2 SSH chiavi Amazon che puoi usare per connetterti ai tuoi nodi dopo il lancio. SSH Se non disponi già di una coppia di EC2 chiavi Amazon, puoi crearne una in AWS Management Console. Per ulteriori informazioni, consulta le coppie di EC2 chiavi Amazon nella Amazon EC2 User Guide.

      Nota

      Se non fornisci una key pair qui, la creazione dello AWS CloudFormation stack fallisce.

    • BootstrapArguments: Esistono diversi argomenti opzionali che puoi passare ai tuoi nodi. Per ulteriori informazioni, visualizza le informazioni sull'utilizzo dello script bootstrap su GitHub. Se stai aggiungendo nodi a un Amazon EKS Local Cluster on AWS Outposts (dove Kubernetes le istanze del control plane vengono eseguite su AWS Outposts) e il cluster non dispone di una connessione Internet in ingresso e in uscita (nota anche come cluster privati), quindi è necessario fornire i seguenti argomenti di bootstrap (come riga singola).

      --b64-cluster-ca ${CLUSTER_CA} --apiserver-endpoint https://${APISERVER_ENDPOINT} --enable-local-outpost true --cluster-id ${CLUSTER_ID}
    • D isableIMDSv 1: Per impostazione predefinita, ogni nodo supporta Instance Metadata Service versione 1 () e. IMDSv1 IMDSv2 È possibile disabilitareIMDSv1. Per prevenire nodi futuri e Pods nel gruppo di nodi da utilizzareIMDSv1, imposta D isableIMDSv 1 su true. Per ulteriori informazioni suIMDS, vedere Configurazione del servizio di metadati dell'istanza. Per ulteriori informazioni sulle relative limitazioni dell'accesso ai nodi, consulta Limita l'accesso al profilo dell'istanza assegnato al nodo (worker).

    • VpcId: inserisci l'ID per VPCquello che hai creato. Prima di scegliere unVPC, esamina VPCi requisiti e le considerazioni.

    • Sottoreti: se il cluster si trova su un Outpost, scegli almeno una sottorete privata nel tuo. VPC Prima di scegliere le sottoreti, consulta Considerazioni e requisiti relativi alla sottorete. È possibile visualizzare le sottoreti private aprendo ogni collegamento relativo alla sottorete dalla scheda Reti del cluster.

  6. Seleziona le opzioni desiderate nella pagina Configura opzioni dello stack, quindi scegli Next (Avanti).

  7. Seleziona la casella di controllo a sinistra di Riconosco che AWS CloudFormation potrebbe creare risorse. IAM , quindi scegli Crea pila.

  8. Al termine della creazione dello stack, selezionalo nella console e scegli Output.

  9. Registra il NodeInstanceRoleper il gruppo di nodi che è stato creato. Ne hai bisogno quando configuri i tuoi EKS nodi Amazon.

Passaggio 2: consenti ai nodi di unirsi al cluster

  1. Verifica se disponi già di una ConfigMap per aws-auth.

    kubectl describe configmap -n kube-system aws-auth
  2. Se ti viene mostrata una ConfigMap per aws-auth, aggiornala se necessario.

    1. Apri ConfigMap per la modifica.

      kubectl edit -n kube-system configmap/aws-auth
    2. Aggiungi una nuova voce mapRoles, se necessario. Imposta il rolearn NodeInstanceRolevalore sul valore registrato nella procedura precedente.

      [...] data: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes [...]
    3. Salva il file ed esci dall'editor di testo.

  3. Se hai ricevuto un messaggio di errore che indica "Error from server (NotFound): configmaps "aws-auth" not found", applica lo ConfigMap di stock.

    1. Scarica la mappa di configurazione.

      curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml
    2. Nel aws-auth-cm.yaml file, impostate rolearn il NodeInstanceRolevalore sul valore registrato nella procedura precedente. Per eseguire questa operazione, utilizza un editor di testo o sostituisci my-node-instance-role tramite il comando seguente:

      sed -i.bak -e 's|<ARN of instance role (not instance profile)>|my-node-instance-role|' aws-auth-cm.yaml
    3. Applica la configurazione. L'esecuzione di questo comando potrebbe richiedere alcuni minuti.

      kubectl apply -f aws-auth-cm.yaml
  4. Guarda lo stato dei nodi e attendi che raggiungano lo stato Ready.

    kubectl get nodes --watch

    Inserisci Ctrl+C per tornare a un prompt dello shell (interprete di comandi).

    Nota

    Se ricevi qualsiasi altro errore di tipo di risorsa o autorizzazione, consulta la sezione Accesso negato o non autorizzato (kubectl) nell'argomento relativo alla risoluzione dei problemi.

    Se i nodi non riescono a unirsi al cluster, consulta Impossibile aggiungere i nodi al cluster la sezione Risoluzione dei problemi con i EKS cluster e i nodi Amazon e Risoluzione dei problemi dei cluster Amazon locali su EKS Outposts. Impossibile unire i nodi a un cluster AWS

  5. Installa il EBS CSI driver Amazon. Per ulteriori informazioni, consulta Installazione su GitHub. Nella sezione Configura l'autorizzazione del driver, assicurati di seguire le istruzioni relative all'opzione Using IAM instance profile. È necessario utilizzare la classe di archiviazione gp2. La classe gp3 di archiviazione non è supportata.

    Per creare una classe di archiviazione gp2 nel cluster, completa i seguenti passaggi.

    1. Per creare il file gp2-storage-class.yaml, emetti il seguente comando:

      cat >gp2-storage-class.yaml <<EOF apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" name: ebs-sc provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp2 encrypted: "true" allowVolumeExpansion: true EOF
    2. Applica il manifesto al cluster.

      kubectl apply -f gp2-storage-class.yaml
  6. (solo GPU nodi) Se hai scelto un tipo di GPU istanza e un'accelerazione EKS ottimizzata per AmazonAMI, devi applicare il plug-in del NVIDIA dispositivo per Kubernetes come DaemonSet sul tuo cluster. Sostituiscilo vX.X.X con la s-device-plugin versione NVIDIA/k8 desiderata prima di eseguire il seguente comando.

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/deployments/static/nvidia-device-plugin.yml

Fase 3: Azioni aggiuntive

  1. (Facoltativo) Implementate un'applicazione di esempio per testare il cluster e Linux nodi.

  2. Se il cluster è implementato su un Outpost, salta questo passaggio. Se il cluster è distribuito sul AWS cloud, le seguenti informazioni sono facoltative. Se la CNIpolicy gestita di Amazon EKS _ IAM _Policy è associata al tuo IAMruolo di EKS nodo Amazon, ti consigliamo di assegnarla a un IAM ruolo che associ al Kubernetes aws-nodeaccount di servizio invece. Per ulteriori informazioni, consulta Configura il VPC CNI plug-in Amazon da utilizzare IRSA.

📝 Modifica questa pagina su GitHub