Cloud & IT Cert Prep · Lezione

Profili Fargate per pod serverless

Eseguire pod Kubernetes su Fargate senza gestire nodi EC2, configurare i profili Fargate e comprenderne le limitazioni relative ai namespace

Lezione 2 di 413 passaggi

Profili Fargate per pod serverless è una lezione Cloud & IT Cert Prep gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cloud & IT Cert Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.

Cosa sono i profili Fargate

AWS Fargate per EKS consente di eseguire pod Kubernetes senza effettuare il provisioning o gestire nodi EC2. Invece di occuparsi dei tipi di istanza e dei gruppi di nodi, si definisce un profilo Fargate che indica a EKS quali pod devono essere eseguiti su Fargate, in base al relativo namespace e agli eventuali selettori di etichette. AWS effettua automaticamente il provisioning della quantità di risorse di calcolo appropriata per ogni pod e la rilascia quando il pod viene arrestato.

Configurazione del profilo Fargate

Un profilo Fargate è associato a un cluster EKS e contiene uno o più selettori; ogni selettore specifica un namespace e, facoltativamente, coppie chiave-valore di etichette Kubernetes. Per essere pianificato su Fargate, un pod deve corrispondere ad almeno un selettore. Il profilo specifica anche il ruolo di esecuzione del pod (un ruolo IAM) e le subnet private che Fargate deve utilizzare per avviare i pod.

# Create a Fargate profile for the 'production' namespace
aws eks create-fargate-profile \
  --cluster-name my-cluster \
  --fargate-profile-name production-profile \
  --pod-execution-role-arn arn:aws:iam::111122223333:role/EKSFargatePodExecutionRole \
  --subnets subnet-aaa subnet-bbb \
  --selectors '[{"namespace":"production"},{"namespace":"staging","labels":{"fargate":"true"}}]'

Ruolo di esecuzione del pod

Il ruolo di esecuzione del pod è un ruolo IAM che EKS assume quando Fargate recupera le immagini dei container e invia i log dei pod a CloudWatch. Deve includere la policy gestita da AWS AmazonEKSFargatePodExecutionRolePolicy. Senza questo ruolo, l'avvio dei pod pianificati su Fargate non riuscirà, perché Fargate non può autenticarsi a ECR né scrivere nei CloudWatch Logs.

# Create the pod execution role trust policy
cat fargate-trust-policy.json
# {
#   "Version": "2012-10-17",
#   "Statement": [{
#     "Effect": "Allow",
#     "Principal": {"Service": "eks-fargate-pods.amazonaws.com"},
#     "Action": "sts:AssumeRole"
#   }]
# }

aws iam attach-role-policy \
  --role-name EKSFargatePodExecutionRole \
  --policy-arn arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy

Restrizioni sui namespace in Fargate

Fargate impone importanti restrizioni sui namespace. Il namespace kube-system non è disponibile per la maggior parte dei profili Fargate, perché vi vengono eseguiti pod di sistema come kube-proxy. Un'eccezione è CoreDNS: AWS offre una procedura guidata per applicare una patch al deployment CoreDNS e rimuovere l'annotazione eks.amazonaws.com/compute-type: ec2, in modo che possa essere eseguito su Fargate. I pod nei namespace esclusi rimarranno non pianificati se non sono disponibili nodi EC2.

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

# Restart CoreDNS to apply the patch
kubectl rollout restart deployment coredns -n kube-system

Dimensionamento delle risorse dei pod Fargate

Fargate assegna le risorse di calcolo in base alle richieste di CPU e memoria definite nella specifica del pod. Arrotonda i valori alla combinazione di vCPU e memoria Fargate supportata immediatamente superiore (ad esempio, da 0,25 vCPU / 0,5 GB fino a 16 vCPU / 120 GB). Il costo viene calcolato solo sulle risorse assegnate, al secondo, per il periodo di esecuzione del pod. Imposti sempre richieste di risorse accurate: richieste inferiori al necessario causano terminazioni per esaurimento della memoria, mentre richieste eccessive aumentano i costi.

# Pod spec with explicit resource requests and limits
apiVersion: v1
kind: Pod
metadata:
  name: api-pod
  namespace: production
spec:
  containers:
  - name: api
    image: 111122223333.dkr.ecr.us-east-1.amazonaws.com/my-api:latest
    resources:
      requests:
        cpu: '500m'
        memory: '1Gi'
      limits:
        cpu: '1'
        memory: '2Gi'

Fargate e gruppi di nodi EC2: compromessi

Fargate elimina la gestione dei nodi, ma presenta alcune limitazioni: nessun DaemonSet (poiché non esistono nodi persistenti su cui pianificarli), nessun container privilegiato e supporto limitato per alcuni tipi di storage. I gruppi di nodi EC2 supportano GPU, kernel personalizzati e carichi di lavoro stateful con unità NVMe locali. Un modello comune consiste nell'eseguire i servizi stateless su Fargate e i carichi di lavoro stateful o basati su GPU su gruppi di nodi EC2 dedicati all'interno dello stesso cluster EKS.

Networking Fargate e gruppi di sicurezza

Ogni pod Fargate riceve una propria interfaccia di rete elastica (ENI) e un indirizzo IP privato dalla subnet specificata nel profilo. È quindi possibile applicare un gruppo di sicurezza univoco a ogni pod utilizzando la funzionalità Security Groups for Pods. I pod Fargate supportano tutte le regole standard dei gruppi di sicurezza VPC, offrendo un controllo dettagliato del traffico in entrata e in uscita a livello del singolo pod, un vantaggio significativo in termini di sicurezza rispetto ai gruppi di sicurezza condivisi a livello di nodo.

# Assign a security group to a pod via annotation
apiVersion: v1
kind: Pod
metadata:
  name: secure-api
  namespace: production
  annotations:
    vpc.amazonaws.com/pod-eni: 'true'
spec:
  securityGroups:
    groupIds:
    - sg-0abc1234def56789a
  containers:
  - name: api
    image: 111122223333.dkr.ecr.us-east-1.amazonaws.com/secure-api:v2

Logging Fargate in CloudWatch

I pod Fargate inviano i log ad Amazon CloudWatch Logs utilizzando il router di log Fluent Bit integrato. Il logging si configura creando una ConfigMap denominata aws-logging nel namespace aws-observability. Il ruolo di esecuzione del pod deve disporre dell'autorizzazione per creare gruppi di log e scrivere eventi di log. I log vengono organizzati in gruppi di log CloudWatch per cluster e namespace, semplificando l'aggregazione centralizzata dei log senza dover eseguire un agente di log separato.

# ConfigMap to enable Fargate logging
apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-logging
  namespace: aws-observability
data:
  flb_log_cw: 'true'
  output.conf: |
    [OUTPUT]
        Name cloudwatch_logs
        Match *
        region us-east-1
        log_group_name /aws/eks/my-cluster/fargate
        log_stream_prefix fargate-
        auto_create_group true

Horizontal Pod Autoscaler su Fargate

Fargate supporta il Horizontal Pod Autoscaler (HPA) di Kubernetes. Quando HPA aumenta il numero di repliche, Fargate effettua automaticamente il provisioning di nuove micro-VM, senza che sia necessario modificare le dimensioni dei gruppi di nodi. Si ottiene così un'esperienza di autoscaling realmente serverless: HPA controlla il numero di pod e Fargate gestisce elasticamente le risorse di calcolo. È comunque necessario che nel cluster sia distribuito il Metrics Server, affinché HPA possa leggere l'utilizzo di CPU e memoria.

# Deploy Metrics Server (required for HPA)
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

# Create an HPA for a Fargate-scheduled deployment
kubectl autoscale deployment my-api \
  --namespace production \
  --cpu-percent=60 \
  --min=2 \
  --max=20

Modello di tariffazione Fargate

Fargate viene addebitato in base ai secondi-vCPU e ai secondi-GB consumati, con un minimo di 1 minuto per pod. Non sono previsti costi a livello di nodo, addebiti per capacità riservata né costi per l'applicazione di patch ad AMI o sistemi operativi. In genere, Fargate è più costoso per unità di calcolo rispetto alle istanze EC2 on demand correttamente dimensionate, ma il costo totale di proprietà è spesso inferiore se si considera il tempo degli ingegneri risparmiato nella gestione dei nodi, nell'applicazione delle patch e nelle decisioni di dimensionamento.

Principali limitazioni di Fargate da conoscere

Limitazioni importanti di Fargate per l'esame SAA-C03: nessun supporto per DaemonSet (i pod non possono essere posizionati su ogni nodo perché non esistono nodi persistenti), nessun container privilegiato, modalità hostNetwork non supportata e storage effimero limitato a 20 GB per pod (espandibile a 200 GB tramite una configurazione). Lo storage a blocchi persistente con EBS non è supportato: utilizzi EFS per lo storage di file persistente condiviso con i pod Fargate.

# Mount EFS in a Fargate pod (EBS is NOT supported on Fargate)
apiVersion: v1
kind: Pod
metadata:
  name: efs-pod
  namespace: production
spec:
  volumes:
  - name: efs-storage
    persistentVolumeClaim:
      claimName: efs-pvc
  containers:
  - name: app
    image: my-image:latest
    volumeMounts:
    - name: efs-storage
      mountPath: /data

Verifica rapida

Verifichi la Sua comprensione dei concetti AWS Solutions Architect (SAA-C03) trattati in questa lezione.

Riepilogo della lezione

In questa lezione ha imparato che: i profili Fargate utilizzano selettori di namespace ed etichette per pianificare i pod in modalità serverless, il ruolo di esecuzione del pod concede a Fargate l'autorizzazione per recuperare le immagini e scrivere i log, e Fargate non supporta DaemonSet né EBS; utilizzi EFS per lo storage persistente. Ora esamineremo il networking EKS con il plugin VPC CNI e AWS Load Balancer Controller.

Gratis per iniziare

Impara Cloud & IT Cert Prep con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
150
Lezioni
600

Domande Frequenti

La lezione «Profili Fargate per pod serverless» è gratuita?

Sì — il testo completo di «Profili Fargate per pod serverless» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cloud & IT Cert Prep, passa a CoddyKit PRO. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.

Cosa imparerò in «Profili Fargate per pod serverless»?

Eseguire pod Kubernetes su Fargate senza gestire nodi EC2, configurare i profili Fargate e comprenderne le limitazioni relative ai namespace Eserciti Cloud & IT Cert Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cloud & IT Cert Prep?

Non è richiesta alcuna esperienza precedente. Cloud & IT Cert Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Profili Fargate per pod serverless»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cloud & IT Cert Prep?

Sì. Ogni lezione Cloud & IT Cert Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Piano di controllo e nodi di lavoro EKS
  2. Profili Fargate per pod serverless
  3. Networking EKS: VPC CNI e bilanciamento del carico
  4. Ruoli IAM per gli account di servizio (IRSA)
← Torna a Cloud & IT Cert Prep