Crea un cluster di EKS Auto Mode con la CLI di AWS - Amazon EKS

Contribuisci a migliorare questa pagina

Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.

Crea un cluster di EKS Auto Mode con la CLI di AWS

I cluster di EKS Auto Mode automatizzano le attività di routine di gestione del cluster l’elaborazione, l’archiviazione e la rete. Ad esempio, i cluster di EKS Auto Mode rilevano automaticamente quando sono necessari nodi aggiuntivi ed effettuano il provisioning di nuove istanze EC2 per soddisfare le richieste di carico di lavoro.

Questo argomento illustra la creazione di un nuovo cluster di EKS Auto Mode utilizzando AWS CLI e, facoltativamente, l’implementazione di un carico di lavoro di esempio.

Prerequisiti

  • La versione più recente dell’interfaccia a riga di comando AWS (AWS CLI) installata e configurata sul dispositivo. Per verificare la versione attuale, usa aws --version. Per installare la versione più recente, consulta Installing e Quick configuration with aws configure nella Guida per l’utente dell’interfaccia a riga di comando AWS.

    • Accedere alla CLI con autorizzazioni IAM sufficienti per creare risorse AWS tra cui policy IAM, ruoli IAM e cluster EKS.

  • Lo strumento a riga di comando kubectl installato sul dispositivo. AWS ti suggerisce di utilizzare la stessa versione di kubectl della versione Kubernetes del cluster EKS. Per installare o aggiornare kubectl, consulta Impostazione di kubectl e eksctl.

Specifica le sottoreti VPC

Amazon EKS Auto Mode implementa i nodi nelle sottoreti VPC. Quando si crea un cluster EKS, devi specificare le sottoreti VPC in cui verranno implementati i nodi. Puoi utilizzare le sottoreti VPC predefinite nell’account AWS o creare un VPC dedicato per carichi di lavoro critici.

Utilizzo di AWS CLI:

  1. Esegui il comando seguente per elencare il VPC di default e le relative sottoreti:

    aws ec2 describe-subnets --filters "Name=vpc-id,Values=$(aws ec2 describe-vpcs --query 'Vpcs[?IsDefault==`true`].VpcId' --output text)" --query 'Subnets[*].{ID:SubnetId,AZ:AvailabilityZone}' --output table
  2. Salva l’output e annotare gli ID delle sottoreti.

    Output di esempio:

    ----------------------------------------
    |             DescribeSubnets          |
    ----------------------------------------
    |   SubnetId        |   AvailabilityZone  |
    |--------------------|---------------------|
    |   subnet-012345678 |   us-west-2a        |
    |   subnet-234567890 |   us-west-2b        |
    |   subnet-345678901 |   us-west-2c        |
    ----------------------------------------

Ruoli IAM per cluster di EKS Auto Mode

Ruolo IAM del cluster

EKS Auto Mode richiede un ruolo IAM del cluster per eseguire azioni nell’account AWS, come il provisioning di nuove istanze EC2. Devi creare questo ruolo per concedere a EKS le autorizzazioni necessarie. AWS consiglia di allegare le seguenti policy gestite da AWS al ruolo IAM del cluster:

Ruolo IAM del nodo

Quando creai un cluster di EKS Auto Mode, specifichi un ruolo IAM del nodo. Quando EKS Auto Mode crea nodi per elaborare carichi di lavoro in sospeso, a ogni nuovo nodo di istanza EC2 viene assegnato il ruolo IAM del nodo. Questo ruolo consente al nodo di comunicare con EKS, ma in genere non è accessibile ai carichi di lavoro in esecuzione sul nodo.

Se desideri concedere le autorizzazioni ai carichi di lavoro in esecuzione su un nodo, usa EKS Pod Identity. Per ulteriori informazioni, consulta Informazioni su come EKS Pod Identity consente ai pod di accedere ai servizi AWS.

Devi creare questo ruolo e allegare la seguente policy gestita AWS:

Ruolo collegato ai servizi

EKS Auto Mode richiede anche un ruolo collegato ai servizi, che viene creato e configurato automaticamente da AWS. Per ulteriori informazioni, consulta AWSServiceRoleForAmazonEKS.

Creazione di un ruolo IAM per un cluster di EKS Auto Mode

Fase 1: Creare la policy di attendibilità

Crea una policy di attendibilità che consenta al servizio Amazon EKS di assumere tale ruolo. Salva la policy come trust-policy.json:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }

Fase 2: Creare il ruolo IAM

Utilizza la policy di attendibilità per creare il ruolo IAM del cluster:

aws iam create-role \
    --role-name AmazonEKSAutoClusterRole \
    --assume-role-policy-document file://trust-policy.json

Fase 3: Annotare l’ARN del ruolo

Recupera e salva l’ARN del nuovo ruolo per usarlo nelle fasi successive:

aws iam get-role --role-name AmazonEKSAutoClusterRole --query "Role.Arn" --output text

Fase 4: Allegare le policy obbligatorie

Allega le seguenti policy gestite da AWS al ruolo IAM del cluster per concedere le autorizzazioni necessarie:

AmazonEKSClusterPolicy:

aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy

AmazonEKSComputePolicy:

aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSComputePolicy

AmazonEKSBlockStoragePolicy:

aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSBlockStoragePolicy

AmazonEKSLoadBalancingPolicy:

aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSLoadBalancingPolicy

AmazonEKSNetworkingPolicy:

aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSNetworkingPolicy

Creazione di un ruolo IAM per un nodo di EKS Auto Mode

Fase 1: Creare la policy di attendibilità

Crea una policy di attendibilità che consenta al servizio Amazon EKS di assumere tale ruolo. Salva la policy come node-trust-policy.json:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } ----[source,json,subs="verbatim,attributes"]

Fase 2: Creare il ruolo IAM del nodo

Usa il file node-trust-policy.json della fase precedente per definire quali entità possono assumere il ruolo. Per creare il ruolo IAM del nodo, esegui il seguente comando:

aws iam create-role \
    --role-name AmazonEKSAutoNodeRole \
    --assume-role-policy-document file://node-trust-policy.json

Fase 3: Annotare l’ARN del ruolo

Una volta creato il ruolo, recupera e salva l’ARN del ruolo IAM del nodo. Devi usare questo ARN nelle fasi successive. Usa il seguente comando per ottenere l’ARN:

aws iam get-role --role-name AmazonEKSAutoNodeRole --query "Role.Arn" --output text

Fase 4: Allegare le policy obbligatorie

Allega le seguenti policy gestite da AWS al ruolo IAM del nodo per fornire le autorizzazioni necessarie:

AmazonEKSWorkerNodeMinimalPolicy:

aws iam attach-role-policy \ --role-name AmazonEKSAutoNodeRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodeMinimalPolicy

AmazonEC2ContainerRegistryPullOnly:

aws iam attach-role-policy \ --role-name AmazonEKSAutoNodeRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly

Creazione di un cluster di EKS Auto Mode

Panoramica

Per creare un cluster di EKS Auto Mode utilizzando AWS CLI, devi avere i seguenti parametri:

  • cluster-name: il nome del cluster.

  • k8s-version: la versione di Kubernetes (ad esempio, 1.31).

  • subnet-ids: ID di sottorete identificati nelle fasi precedenti.

  • cluster-role-arn: ARN del ruolo IAM del cluster.

  • node-role-arn: ARN del ruolo IAM del nodo.

Configurazioni predefinite del cluster

Esaminare questi valori e funzionalità predefiniti prima di creare il cluster:

  • nodePools: EKS Auto Mode include pool di nodi generici e predefiniti di sistema. Maggiori informazioni sui Node Pools.

Nota: i pool di nodi in EKS Auto Mode differiscono dai gruppi di nodi gestiti di Amazon EKS ma possono coesistere nello stesso cluster.

  • computeConfig.enabled: automatizza le attività di elaborazione di routine, come la creazione e l’eliminazione di istanze EC2.

  • kubernetesNetworkConfig.elasticLoadBalancing.enabled: automatizza le attività di bilanciamento del carico, includendo la creazione e l’eliminazione dei bilanciatori del carico elastico.

  • storageConfig.blockStorage.enabled: automatizza le attività di archiviazione, come la creazione e l’eliminazione di volumi Amazon EBS.

  • accessConfig.authenticationMode: richiede voci di accesso EKS. Maggiori informazioni su EKS authentication modes.

Esegui il comando

Usa il comando seguente per creare il cluster:

aws eks create-cluster \
  --region ${AWS_REGION} \
  --cli-input-json \
  "{
      \"name\": \"${CLUSTER_NAME}\",
      \"version\": \"${K8S_VERSION}\",
      \"roleArn\": \"${CLUSTER_ROLE_ARN}\",
      \"resourcesVpcConfig\": {
        \"subnetIds\": ${SUBNETS_JSON},
        \"endpointPublicAccess\": true,
        \"endpointPrivateAccess\": true
      },
      \"computeConfig\": {
        \"enabled\": true,
        \"nodeRoleArn\":\"${NODE_ROLE_ARN}\",
        \"nodePools\": [\"general-purpose\", \"system\"]
      },
      \"kubernetesNetworkConfig\": {
        \"elasticLoadBalancing\": {
          \"enabled\": true
        }
      },
      \"storageConfig\": {
        \"blockStorage\": {
          \"enabled\": true
        }
      },
      \"accessConfig\": {
        \"authenticationMode\": \"API\"
      }
    }

Verifica lo stato del cluster

Fase 1: verificare la creazione del cluster

Esegui il comando seguente per verificare lo stato del cluster. La creazione del cluster richiede in genere 15 minuti.

aws eks describe-cluster --name "${CLUSTER_NAME}" --output json

Fase 2: aggiornare kubeconfig

Una volta che il cluster è pronto, aggiorna il file kubeconfig locale per consentire a kubectl di comunicare con il cluster. Questa configurazione utilizza AWS CLI per l’autenticazione.

aws eks update-kubeconfig --name "${CLUSTER_NAME}"

Fase 3: verificare i pool di nodi

Elenca i pool di nodi nel cluster con il comando seguente:

kubectl get nodepools

Fasi successive