AWS Solutions Architect · Oppitunti

Fargate-profiilit palvelimettomille podeille

Suorita Kubernetes-podeja Fargatessa ilman EC2-solmujen hallintaa, määritä Fargate-profiileja ja ymmärrä niiden nimiavaruusrajoitukset.

Oppitunti 2/413 vaihetta

Fargate-profiilit palvelimettomille podeille on ilmainen AWS Solutions Architect-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu AWS Solutions Architect-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. AWS Solutions Architect-kurssilla on yhteensä 4 oppituntia.

Mitä Fargate-profiilit ovat?

AWS Fargate for EKS mahdollistaa Kubernetes-podien suorittamisen ilman EC2-solmujen varaamista tai hallintaa. Instanssityyppien ja solmuryhmien sijaan määritätte Fargate-profiilin, joka kertoo EKS:lle podit, joiden tulee suorittaa Fargatessa nimiavaruuden ja valinnaisten nimiövalitsinten perusteella. AWS varaa automaattisesti kullekin podille sopivan määrän laskentaresursseja ja vapauttaa ne, kun podi pysähtyy.

Fargate-profiilin määritys

Fargate-profiili liitetään EKS-klusteriin, ja se sisältää yhden tai useamman valitsimen — kukin valitsin määrittää nimiavaruuden sekä valinnaiset Kubernetesin nimiön avain–arvo-parit. Podin on vastattava vähintään yhtä valitsinta, jotta se voidaan ajoittaa Fargatessa suoritettavaksi. Profiilissa määritetään myös podin suoritusrooli (IAM-rooli) sekä yksityiset aliverkot, joita Fargate käyttää podien käynnistämiseen.

# 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"}}]'

Podin suoritusrooli

Podin suoritusrooli on IAM-rooli, jota EKS käyttää, kun Fargate noutaa säilökuvia ja lähettää podien lokit CloudWatchiin. Rooliin on sisällytettävä AWS:n hallinnoima käytäntö AmazonEKSFargatePodExecutionRolePolicy. Ilman tätä roolia Fargatessa ajoitettujen podien käynnistys epäonnistuu, koska Fargate ei voi todentautua ECR:ään tai kirjoittaa CloudWatch Logsiin.

# 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

Fargaten nimiavaruusrajoitukset

Fargate asettaa tärkeitä nimiavaruusrajoituksia. kube-system-nimiavaruus ei yleensä ole useimpien Fargate-profiilien käytettävissä, koska siellä suoritetaan järjestelmäpodeja, kuten kube-proxy. Poikkeuksena on CoreDNS: AWS tarjoaa ohjatun prosessin CoreDNS-käyttöönoton korjaamiseen siten, että eks.amazonaws.com/compute-type: ec2-annotaatio poistetaan ja CoreDNS voi suorittaa Fargatessa. Poissuljettujen nimiavaruuksien podit jäävät ajoittamatta, jos käytettävissä ei ole EC2-solmuja.

# 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

Fargate-podin resurssien mitoitus

Fargate varaa laskentaresurssit pod-määrityksessä määritettyjen suoritin- ja muistipyyntöjen perusteella. Se pyöristää arvot ylöspäin lähimpään Fargaten tukemaan vCPU:n ja muistin yhdistelmään (esimerkiksi 0,25 vCPU / 0,5 Gt aina 16 vCPU:hun / 120 Gt:uun asti). Maksatte vain podin suorituksen aikana sekunnissa käytetyistä varatuista resursseista. Asettakaa resurssipyynnöt aina oikein — liian pienet pyynnöt johtavat muistin loppumisen aiheuttamaan prosessin lopettamiseen, kun taas liian suuret pyynnöt kasvattavat kustannuksia.

# 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 ja EC2-solmuryhmät: edut ja haitat

Fargate poistaa solmujen hallinnan tarpeen, mutta siihen liittyy rajoituksia: DaemonSetejä ei tueta (koska niiden ajoittamista varten ei ole pysyviä solmuja), etuoikeutettuja säilöjä ei tueta, ja tiettyjen tallennustyyppien tuki on rajallinen. EC2-solmuryhmät tukevat grafiikkasuorittimia, mukautettuja ytimiä ja tilallisia työkuormia paikallisilla NVMe-asemilla. Yleinen toimintamalli on suorittaa tilattomat palvelut Fargatessa ja tilalliset tai grafiikkasuorittimia käyttävät työkuormat erillisissä EC2-solmuryhmissä samassa EKS-klusterissa.

Fargaten verkkoyhteydet ja suojausryhmät

Jokainen Fargate-podi saa oman elastisen verkkoliitännän (ENI) ja yksityisen IP-osoitteen profiilissa määritetystä aliverkosta. Tämän ansiosta kuhunkin podiin voidaan liittää yksilöllinen suojausryhmä Security Groups for Pods -ominaisuuden avulla. Fargate-podit tukevat kaikkia VPC:n tavanomaisia suojausryhmäsääntöjä, joten saapuvaa ja lähtevää liikennettä voidaan hallita tarkasti yksittäisen podin tasolla — tämä on merkittävä tietoturvaetu verrattuna jaettuihin solmutason suojausryhmiin.

# 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

Fargaten lokitus CloudWatchiin

Fargate-podit lähettävät lokit Amazon CloudWatch Logsiin sisäänrakennetun Fluent Bit -lokireitittimen avulla. Lokitus määritetään luomalla ConfigMap-resurssi nimeltä aws-logging nimiavaruuteen aws-observability. Podin suoritusroolilla on oltava oikeus luoda lokiryhmiä ja kirjoittaa lokitapahtumia. Lokit järjestetään CloudWatchin lokiryhmiin klusterin ja nimiavaruuden mukaan, joten lokien keskitetty kokoaminen on helppoa ilman erillisen lokiagentin suorittamista.

# 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

Horisontaalinen podien automaattinen skaalaus Fargatessa

Fargate tukee Kubernetesin Horizontal Pod Autoscaler (HPA) -ominaisuutta. Kun HPA skaalaa replikamäärää ylöspäin, Fargate varaa automaattisesti uusia mikrovirtuaalikoneita ilman, että solmuryhmän kokoa tarvitsee muuttaa. Näin saavutetaan aidosti palvelimeton automaattinen skaalaus: HPA hallitsee podien määrää ja Fargate käsittelee laskentaresurssit joustavasti. Klusteriin on silti otettava käyttöön Metrics Server, jotta HPA voi lukea suorittimen ja muistin käytön.

# 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

Fargaten hinnoittelumalli

Fargaten käytöstä maksetaan kulutuksen mukaan vCPU-sekunteina ja Gt-sekunteina, ja podikohtainen vähimmäisveloitus on yksi minuutti. Solmutason kustannuksia, varatun kapasiteetin maksuja tai AMI-käyttöjärjestelmän korjauskustannuksia ei ole. Fargate on yleensä laskentaresurssiyksikköä kohden kalliimpi kuin oikein mitoitettu EC2 On-Demand -instanssi, mutta kokonaiskustannukset ovat usein pienemmät, kun otetaan huomioon solmujen hallinnassa, korjaamisessa ja skaalauspäätöksissä säästetty työaika.

Fargaten tärkeät rajoitukset

SAA-C03-kokeessa tunnettavia Fargaten keskeisiä rajoituksia ovat: DaemonSet-tukea ei ole (podeja ei voida sijoittaa jokaiseen solmuun, koska pysyviä solmuja ei ole), etuoikeutettuja säilöjä ei tueta, hostNetwork-tilaa ei tueta, ja podikohtainen haihtuva tallennustila on rajoitettu 20 Gt:uun (määritysasetuksella rajoitusta voidaan kasvattaa 200 Gt:uun). EBS:n pysyvää lohkotallennustilaa ei tueta — käyttäkää EFS:ää jaettuun pysyvään tiedostotallennukseen Fargate-podien kanssa.

# 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

Pikatarkistus

Testatkaa, miten hyvin ymmärrätte tämän oppitunnin AWS Solutions Architect (SAA-C03) -käsitteet.

Oppitunnin yhteenveto

Tässä oppitunnissa opitte seuraavaa: Fargate-profiilit käyttävät nimiavaruus- ja nimiövalitsimia podien palvelimettomaan ajoittamiseen, podin suoritusrooli antaa Fargatelle oikeudet noutaa kuvia ja kirjoittaa lokeja, ja Fargate ei tue DaemonSetejä tai EBS:ää — käyttäkää pysyvään tallennukseen EFS:ää. Seuraavaksi tutustumme EKS-verkon toimintaan VPC CNI -laajennuksen ja AWS Load Balancer Controllerin avulla.

Aloita maksutta

Opi AWS Solutions Architect tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”Fargate-profiilit palvelimettomille podeille” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa AWS Solutions Architect-oppimispolun 3 oppituntia, myös oppitunnin “Fargate-profiilit palvelimettomille podeille”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. AWS Solutions Architect-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Fargate-profiilit palvelimettomille podeille”?

Suorita Kubernetes-podeja Fargatessa ilman EC2-solmujen hallintaa, määritä Fargate-profiileja ja ymmärrä niiden nimiavaruusrajoitukset. Harjoittelet AWS Solutions Architect-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni AWS Solutions Architect-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin AWS Solutions Architect-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Fargate-profiilit palvelimettomille podeille”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä AWS Solutions Architect-oppitunnilla?

Kyllä. Jokainen AWS Solutions Architect-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. EKS-ohjaustaso ja työntekijäsolmut
  2. Fargate-profiilit palvelimettomille podeille
  3. EKS-verkotus: VPC CNI ja kuormantasaus
  4. Palvelutilien IAM-roolit (IRSA)
← Takaisin: AWS Solutions Architect