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
Profili Fargate per pod serverless è una lezione AWS Solutions Architect 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 AWS Solutions Architect, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AWS Solutions Architect 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/AmazonEKSFargatePodExecutionRolePolicyRestrizioni 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-systemDimensionamento 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:v2Logging 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 trueHorizontal 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=20Modello 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: /dataVerifica 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.
Impara AWS Solutions Architect 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
- 30
- Lezioni
- 120
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 AWS Solutions Architect, passa a CoddyKit PRO. Il corso AWS Solutions Architect 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 AWS Solutions Architect 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 AWS Solutions Architect?
Non è richiesta alcuna esperienza precedente. AWS Solutions Architect 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 AWS Solutions Architect?
Sì. Ogni lezione AWS Solutions Architect 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
- Piano di controllo e nodi di lavoro EKS
- Profili Fargate per pod serverless
- Networking EKS: VPC CNI e bilanciamento del carico
- Ruoli IAM per gli account di servizio (IRSA)