Nozioni di base su AWS Fargate utilizzando Amazon EKS - Amazon EKS

Nozioni di base su AWS Fargate utilizzando Amazon EKS

Questo argomento consente di iniziare a eseguire i pod su AWS Fargate con il cluster Amazon EKS.

Se si limita l'accesso all'endpoint pubblico del cluster utilizzando blocchi CIDR, è consigliabile abilitare anche l'accesso agli endpoint privati in modo che i pod Fargate possano comunicare con il cluster. Senza l'endpoint privato abilitato, i blocchi CIDR specificati per l'accesso pubblico devono includere le origini di uscita dal VPC. Per ulteriori informazioni, consulta . Controllo accessi all'endpoint del cluster Amazon EKS.

Prerequisito

Utilizzo di un cluster esistente. AWS Fargate con Amazon EKS è disponibile in tutte le regioni Amazon EKS ad eccezione di Cina (Pechino), Cina (Ningxia), AWS GovCloud (Stati Uniti orientali) e AWS GovCloud (Stati Uniti occidentali). Se non disponi già di un cluster Amazon EKS, consultare Guida introduttiva ad Amazon EKS.

Assicurarsi che i nodi esistenti possano comunicare con i pod Fargate

Se si utilizza un nuovo cluster senza nodi di lavoro o un cluster con solo gruppi di nodi gestiti, è possibile passare a Creazione di un ruolo di esecuzione del pod Fargate.

Nel caso si stia lavorando con un cluster esistente che dispone già di nodi che sono associati ad esso. Assicurarsi che i pod su questi nodi possano comunicare liberamente con i pod in esecuzione su Fargate. I pod in esecuzione su Fargate vengono configurati automaticamente per utilizzare il gruppo di sicurezza del cluster per il cluster a cui sono associati. È necessario assicurarsi che tutti i nodi esistenti nel cluster possano inviare e ricevere traffico da e verso il gruppo di sicurezza del cluster. I Gruppi di nodi gestiti vengono configurati automaticamente per utilizzare anche il gruppo di sicurezza del cluster, pertanto non è necessario modificarli o verificarli per questa compatibilità.

Per i gruppi di nodi esistenti creati con eksctl o con i modelli gestiti Amazon EKS AWS CloudFormation, è possibile aggiungere manualmente il gruppo di sicurezza del cluster ai nodi. In alternativa, è possibile modificare il modello di avvio del gruppo Auto Scaling per il gruppo di nodi per collegare il gruppo di sicurezza cluster alle istanze. Per ulteriori informazioni, consultare la sezione relativa alla modifica dei gruppi di sicurezza di un'istanza nella Guida per l'utente di Amazon VPC.

È possibile verificare la presenza di un gruppo di sicurezza del cluster in AWS Management Console nella sezione Rete del cluster. O, in alternativa, utilizzare il seguente comando AWS CLI. Quando si utilizza questo comando, sostituire my-cluster con il nome del cluster.

aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.clusterSecurityGroupId

Creazione di un ruolo di esecuzione del pod Fargate

Quando il cluster crea pod su AWS Fargate, i componenti in esecuzione sull'infrastruttura di Fargate devono effettuare chiamate a API AWS per conto dell'utente. In questo modo possono eseguire operazioni come estrarre le immagini container da Amazon ECR o instradare i log ad altri servizi AWS. Il ruolo di esecuzione del pod Amazon EKS fornisce le autorizzazioni IAM per eseguire questa operazione.

Nota

Se è stato creato il cluster eksctl utilizzando l'opzione --fargate, il cluster dispone già di un ruolo di esecuzione del pod ed è possibile passare a Creazione di un profilo Fargate per il cluster. Allo stesso modo, se si utilizza eksctl per creare i profili Fargate, eksctl creerà il ruolo di esecuzione pod se non ne esiste già uno.

Quando si crea un profilo Fargate, è necessario specificare un ruolo di esecuzione del pod da utilizzare con i pod. Questo ruolo viene aggiunto al controllo di accesso basato sul ruolo (RBAC) di Kubernetes del cluster per l'autorizzazione. Ciò consente al kubelet in esecuzione sull'infrastruttura Fargate di registrarsi con il cluster Amazon EKS in modo che possa essere visualizzato nel cluster come nodo. Per ulteriori informazioni, consulta . Ruolo IAM per l'esecuzione del pod Amazon EKS.

Importante
  • I container in esecuzione nel pod Fargate non possono assumere le autorizzazioni IAM associate a un ruolo di esecuzione del pod. Per concedere ai container nel pod Fargate le autorizzazioni per accedere ad altri servizi AWS, è necessario utilizzare Ruoli IAM per gli account di servizio.

  • L'ARN del ruolo non può includere un percorso. Il formato dell'ARN del ruolo deve essere arn:aws:iam::111122223333:role/role-name. Per ulteriori informazioni, consulta . La ConfigMap per aws-auth non concede l'accesso al cluster.

Per creare un AWS ruolo di esecuzione del pod Fargate con il AWS Management Console

  1. Apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione a sinistra seleziona Ruoli.

  3. Nella pagina Roles (Ruoli) seleziona Create role (Crea ruolo).

  4. Nella pagina Select trusted entity (Seleziona entità attendibile), effettua le seguenti operazioni:

    1. Nella sezione Trusted entity type (Tpo di identità attendibile), scegli Servizio AWS.

    2. Dall'elenco a discesa Use cases for other Servizi AWS (Casi d'uso per altri Servizi AWS), scegli EKS.

    3. Scegli EKS - Fargate pod (EKS - Pod Fargate).

    4. Seleziona Next (Successivo).

  5. Nella pagina Add permissions (Aggiungi autorizzazioni), scegli Next (Successivo).

  6. Nella pagina Name, review, and create (Assegna un nome, rivedi e crea), effettua le seguenti operazioni:

    1. Per Nome ruolo, immettere un nome univoco per il ruolo, ad esempio AmazonEKSFargatePodExecutionRole.

    2. In Add tags (Optional) (Aggiungi tag (facoltativo)), aggiungi metadati al ruolo allegando i tag come coppie chiave-valore. Per ulteriori informazioni sull'utilizzo di tag in IAM, consulta la sezione Assegnazione di tag a entità IAM nella Guida per l'utente di IAM.

    3. Scegliere Create role (Crea ruolo).

Creazione di un profilo Fargate per il cluster

Prima di poter pianificare i pod in esecuzione su Fargate nel cluster, è necessario definire un profilo Fargate che specifichi i pod che utilizzano Fargate al momento dell'avvio. Per ulteriori informazioni, consulta . Profilo AWS Fargate.

Nota

Se è stato creato il cluster con eksctl utilizzando l'opzione --fargate, è già stato creato un profilo Fargate per il cluster con selettori per tutti i pod negli spazi dei nomi kube-system e default. Utilizzare la procedura seguente per creare profili Fargate per gli altri spazi dei nomi con cui si desidera utilizzare Fargate.

È possibile creare un profilo Fargate utilizzando eksctl o la AWS Management Console.

Questa procedura richiede eksctl versione 0.84.0 o versione successiva. Puoi verificare la versione con il seguente comando:

eksctl version

Per ulteriori informazioni sull'installazione o l'aggiornamento di eksctl, consulta Installazione o aggiornamento di eksctl.

eksctl

Per creare un profilo Fargate con eksctl

Crea il tuo profilo Fargate con il seguente comando eksctl, sostituendo ogni example-value con i valori in tuo possesso. È necessario specificare uno spazio dei nomi. Tuttavia, l'opzione --labels non è obbligatoria.

eksctl create fargateprofile \ --cluster my-cluster \ --name fargate_profile_name \ --namespace kubernetes_namespace \ --labels key=value
AWS Management Console

Per creare un profilo Fargate per un cluster con la AWS Management Console

  1. Aprire la console Amazon EKS all'indirizzo https://console.aws.amazon.com/eks/home#/clusters.

  2. Scegliere il cluster per cui creare un profilo Fargate.

  3. Nella sezione Profili Fargate, scegliere Aggiungi profilo Fargate.

  4. Nella pagina Configure Fargate Profile (Configura profilo Fargate), effettua le seguenti operazioni:

    1. In Nome, inserire un nome univoco per il profilo Fargate.

    2. Per il Ruolo di esecuzione del pod, scegliere il ruolo di esecuzione del pod da utilizzare con il profilo Fargate. Vengono visualizzati solo i ruoli IAM con il principale del servizio eks-fargate-pods.amazonaws.com. Se non è presente alcun ruolo nell'elenco, è necessario crearne uno. Per ulteriori informazioni, consulta . Ruolo IAM per l'esecuzione del pod Amazon EKS.

    3. Seleziona l'elenco a discesa Subnets (Sottoreti) e deseleziona qualsiasi sottorete il cui nome contenga Public. I pod in esecuzione su Fargate supportano solo sottoreti private.

    4. Per i Tag, puoi opzionalmente taggare il tuo profilo Fargate. Questi tag non si propagano ad altre risorse associate al profilo, ad esempio i suoi pod.

    5. Seleziona Next (Successivo).

  5. Nella pagina Configure pod selection (Configura selezione pod), procedere come segue:

    1. Per Namespace (Spazio dei nomi), immettere uno spazio dei nomi che corrisponda ai pod, ad esempio kube-system o default.

    2. (Facoltativo) Aggiungere etichette Kubernetes al selettore che segnalino che i pod nello spazio dei nomi specificato devono corrispondere al selettore. Ad esempio, è possibile aggiungere l'etichetta infrastructure: fargate al selettore. In questo modo, solo i pod nello spazio dei nomi specificato che hanno anche l'etichetta Kubernetes infrastructure: fargate corrispondano al selettore.

    3. Seleziona Next (Successivo).

  6. Nella pagina Revisione e creazione controllare le informazioni relative al profilo Fargate e scegliere Crea.

Aggiorna CoreDNS

Per impostazione predefinita, CoreDNS è configurato per l'esecuzione sull'infrastruttura Amazon EC2 nei cluster Amazon EKS. Se desideri eseguire solo i pod su Fargate nel cluster, segui la procedura riportata di seguito.

Nota

Se è stato creato il cluster eksctl utilizzando l'opzione --fargate è possibile passare a Fasi successive.

  1. Creazione di un profilo Fargate per CoreDNS. Sostituisci my-cluster con il nome del tuo cluster, 111122223333 con il tuo ID account, AmazonEKSFargatePodExecutionRole con il nome del ruolo di esecuzione del pod e 0000000000000001, 0000000000000002 e 0000000000000003 con gli ID delle sottoreti private. Se non si dispone di un ruolo di esecuzione del pod, è necessario prima crearne uno.

    Importante

    L'ARN del ruolo non può includere un percorso. Il formato dell'ARN del ruolo deve essere arn:aws:iam::111122223333:role/role-name. Per ulteriori informazioni, consulta . La ConfigMap per aws-auth non concede l'accesso al cluster.

    aws eks create-fargate-profile \ --fargate-profile-name coredns \ --cluster-name my-cluster \ --pod-execution-role-arn arn:aws:iam::111122223333:role/AmazonEKSFargatePodExecutionRole \ --selectors namespace=kube-system,labels={k8s-app=kube-dns} \ --subnets subnet-0000000000000001 subnet-0000000000000002 subnet-0000000000000003
  2. Utilizzare il comando seguente per rimuovere l'annotazione eks.amazonaws.com/compute-type : ec2 dai pod CoreDNS.

    kubectl patch deployment coredns \ -n kube-system \ --type json \ -p='[{"op": "remove", "path": "/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]'

Fasi successive

  • È possibile avviare la migrazione delle applicazioni esistenti per l'esecuzione su Fargate con il seguente flusso di lavoro.

    1. Creare un profilo Fargate che corrisponda allo spazio dei nomi Kubernetes e alle etichette Kubernetes dell'applicazione.

    2. Eliminare e ricreare tutti i pod esistenti in modo che siano programmati su Fargate. Ad esempio, il comando seguente attiva l'implementazione del coredns. È possibile modificare lo spazio dei nomi e il tipo di implementazione per aggiornare pod specifici.

      kubectl rollout restart -n kube-system deployment coredns
  • Implementare Bilanciamento del carico di applicazione su Amazon EKS per permettere l'esecuzione di oggetti Ingress per i pod in esecuzione su Fargate.

  • Utilizzare il plug-in Vertical Pod Autoscaler per ridimensionare inizialmente la CPU e la memoria per i pod Fargate, quindi utilizzare il comando Horizontal Pod Autoscaler per scalare quei pod. Se si desidera che il Vertical Pod Autoscaler implementi di nuovo automaticamente i pod su Fargate con combinazioni di CPU e memoria più grandi, impostare la modalità Autoscaler del Pod Vertical su Auto o Recreate. Ciò garantisce una corretta funzionalità. Per ulteriori informazioni, consulta la documentazione Vertical Pod Autoscaler su GitHub.

  • È possibile impostare il collector AWS Distro per OpenTelemetry (ADOT) per il monitoraggio delle applicazioni seguendo queste istruzioni.