Cloud & IT Cert Prep · leksjon

Distribuere arbeidsbelastninger på AKS

Opprett en AKS-klynge, distribuer en applikasjon med flere containere ved hjelp av kubectl og Helm-diagrammer, og eksponer den eksternt med en Azure Load Balancer-tjeneste.

Leksjon 4 av 413 trinn

Distribuere arbeidsbelastninger på AKS er en gratis leksjon i Cloud & IT Cert Prep på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Cloud & IT Cert Prep, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.

Hva er Azure Kubernetes Service?

Azure Kubernetes Service (AKS) er en administrert Kubernetes-tjeneste der Microsoft drifter og vedlikeholder kontrollplanet (API-server, etcd, scheduler) uten kostnad. De betaler bare for worker-nodene (VM-er). AKS håndterer oppgraderinger av Kubernetes-versjonen, oppdatering av node-OS, skalering av kontrollplanet og integrasjon med Azure-nettverk, lagring og identitet. Dette reduserer driftsbelastningen ved produksjonskjøring av Kubernetes betydelig.

Opprette en AKS-klynge

Opprett en AKS-klynge med az aks create, og angi antall noder, VM-størrelse og nettverksalternativer. AKS oppretter automatisk en node-ressursgruppe som inneholder VM-ene, administrerte disker, NIC-er og lastbalansere. Den anbefalte nettverksmodusen er Azure CNI – hver pod får en ekte VNet-IP-adresse, noe som muliggjør direkte tilkobling til andre Azure-tjenester uten NAT.

# Create an AKS cluster with 3 nodes
az aks create \
  --name myAKSCluster \
  --resource-group MyRG \
  --location eastus \
  --node-count 3 \
  --node-vm-size Standard_D2s_v3 \
  --enable-managed-identity \
  --attach-acr mycontainerregistry \
  --network-plugin azure \
  --generate-ssh-keys

# Get kubectl credentials
az aks get-credentials --name myAKSCluster --resource-group MyRG

Nodepuljer

AKS-klynger kan ha flere nodepuljer – grupper med VM-er som har samme konfigurasjon. Systemnodepuljen kjører kritiske Kubernetes-systemkomponenter (kube-system-pods). Brukernodepuljer kjører applikasjonens arbeidsbelastninger. Separate puljer gjør det mulig å kombinere VM-SKU-er – en generell pulje for webapper og en GPU-pulje for ML-arbeidsbelastninger – og skalere hver av dem uavhengig.

# Add a GPU node pool for ML workloads
az aks nodepool add \
  --cluster-name myAKSCluster \
  --resource-group MyRG \
  --name gpupool \
  --node-count 2 \
  --node-vm-size Standard_NC6s_v3 \
  --node-taints sku=gpu:NoSchedule

# List node pools
az aks nodepool list \
  --cluster-name myAKSCluster \
  --resource-group MyRG \
  -o table

Distribuere en applikasjon med flere containere

Distribuer en applikasjon med flere lag til AKS ved å skrive separate Kubernetes-manifestfiler for hvert lag og bruke kubectl apply på dem. En typisk distribusjon omfatter en Deployment for weblaget, en Deployment for API-laget, Services for å koble dem sammen, en ConfigMap for miljøkonfigurasjon og en Ingress-ressurs for å eksponere appen eksternt via ett enkelt vertsnavn.

# Apply all manifests in a directory
kubectl apply -f k8s/

# Or apply individual files
kubectl apply -f frontend-deployment.yaml
kubectl apply -f frontend-service.yaml
kubectl apply -f api-deployment.yaml
kubectl apply -f api-service.yaml
kubectl apply -f ingress.yaml

# Watch rollout status
kubectl rollout status deployment/frontend
kubectl rollout status deployment/api

Ingress og Application Gateway

En Ingress-ressurs definerer HTTP-rutingsregler som knytter vertsnavn og URL-baner til backend-tjenester. I motsetning til en LoadBalancer-tjeneste, som har én ekstern IP-adresse per tjeneste, håndterer én enkelt Ingress-kontroller all ekstern HTTP-trafikk og ruter den basert på regler. I AKS kan De bruke NGINX Ingress Controller eller Application Gateway Ingress Controller (AGIC) til å terminere TLS og rute trafikk til flere tjenester.

# Ingress routing traffic to two services by path
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myapp-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  tls:
  - hosts: [myapp.contoso.com]
    secretName: myapp-tls
  rules:
  - host: myapp.contoso.com
    http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service: {name: api-svc, port: {number: 80}}
      - path: /
        pathType: Prefix
        backend:
          service: {name: frontend-svc, port: {number: 80}}

Helm Charts for pakking av applikasjoner

Helm er pakkebehandleren for Kubernetes. Et chart samler alle Kubernetes-manifestene for en applikasjon (Deployments, Services, Ingress, ConfigMaps) i én versjonert og parameteriserbar pakke. helm install distribuerer et chart med miljøspesifikke verdier. Helm-repositoriet på Artifact Hub inneholder tusenvis av ferdigbygde charts for vanlig infrastruktur (NGINX, cert-manager, Prometheus, Redis).

# Add the NGINX Ingress Controller chart repo
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

# Install NGINX Ingress Controller
helm install ingress-nginx ingress-nginx/ingress-nginx \
  --namespace ingress-nginx \
  --create-namespace \
  --set controller.replicaCount=2

# Install your own app chart with custom values
helm install myapp ./charts/myapp -f values-prod.yaml

Fortløpende oppdateringer og tilbakerullinger

Oppdater en Deployment ved å endre taggen for container-imaget – Kubernetes utfører en fortløpende oppdatering ved å opprette nye pods med det oppdaterte imaget og gradvis avslutte de gamle, slik at applikasjonen forblir tilgjengelig hele tiden. Hvis den nye versjonen ikke fungerer, kan De umiddelbart rulle tilbake til forrige revisjon med kubectl rollout undo. Kubernetes beholder en konfigurerbar revisjonshistorikk for hver Deployment.

# Update the image to a new version
kubectl set image deployment/myapp \
  myapp=mycontainerregistry.azurecr.io/myapp:v2.0

# Watch the rollout progress
kubectl rollout status deployment/myapp

# View rollout history
kubectl rollout history deployment/myapp

# Rollback to the previous version
kubectl rollout undo deployment/myapp

# Rollback to a specific revision
kubectl rollout undo deployment/myapp --to-revision=2

Automatisk klyngeskalering

Cluster Autoscaler legger automatisk til eller fjerner workernoder fra en AKS-nodepool basert på ventende pod-planlegging og nodeutnyttelse. Når pods ikke kan planlegges fordi alle nodene er fulle, klargjør Cluster Autoscaler nye noder. Når noder er lite utnyttet og pods kan konsolideres, tømmes og fjernes nodene. Dette utfyller Horizontal Pod Autoscaler – HPA skalerer pods, mens Cluster Autoscaler skalerer noder.

# Enable Cluster Autoscaler on the default node pool
az aks update \
  --name myAKSCluster \
  --resource-group MyRG \
  --enable-cluster-autoscaler \
  --min-count 2 \
  --max-count 10

# Update autoscaler bounds on a specific node pool
az aks nodepool update \
  --cluster-name myAKSCluster \
  --resource-group MyRG \
  --name nodepool1 \
  --enable-cluster-autoscaler \
  --min-count 3 \
  --max-count 20

AKS-overvåking med Azure Monitor

Aktiver Azure Monitor Container Insights for å samle inn logger og måledata fra AKS-klyngen uten å distribuere overvåkingsverktøy fra tredjeparter. Container Insights tilbyr ferdigbygde instrumentbord for klyngehelse, CPU- og minnebruk på noder og pods, containerlogger og direkte strømming av pods. Det integreres med Prometheus for innsamling av egendefinerte måledata og gjør det mulig å spørre etter alle data ved hjelp av KQL i Log Analytics.

# Enable Azure Monitor Container Insights on AKS
az aks enable-addons \
  --addons monitoring \
  --name myAKSCluster \
  --resource-group MyRG \
  --workspace-resource-id /subscriptions/.../workspaces/MyLogAnalytics

# Stream live logs from a running pod
kubectl logs -f deployment/myapp -c myapp

# Query pod resource usage
kubectl top pods --namespace default

AKS-RBAC og Azure Active Directory

Integrer AKS med Microsoft Entra ID for å bruke Azure AD-brukere og -grupper til Kubernetes RBAC. I stedet for å administrere separate Kubernetes-brukerkontoer tildeler De ClusterRole- eller Role bindings til objekt-ID-er i Entra ID. Når en utvikler kjører kubectl, validerer AKS Entra ID-tokenet. Dette gir sentralisert identitetsadministrasjon og integrasjon med regler for betinget tilgang og MFA.

# Enable Entra ID RBAC on an AKS cluster
az aks update \
  --name myAKSCluster \
  --resource-group MyRG \
  --enable-azure-rbac

# Assign a built-in AKS role to an Entra group
az role assignment create \
  --role 'Azure Kubernetes Service RBAC Reader' \
  --assignee '<Entra-Group-Object-ID>' \
  --scope /subscriptions/.../resourceGroups/MyRG/providers/Microsoft.ContainerService/managedClusters/myAKSCluster

Nettverkspolicyer for sikkerhet på pod-nivå

Nettverkspolicyer er Kubernetes-ressurser som styrer hvilke pods som kan kommunisere med hverandre. Som standard kan alle pods i en klynge nå alle andre pods – nettverkspolicyer fungerer som en brannmur på pod-nivå. I AKS kan De aktivere Azure network policy eller Calico for å håndheve policyer. Et vanlig mønster er en default-deny-policy som blokkerer all trafikk mellom pods, etterfulgt av eksplisitte tillatelsespolicyer for de bestemte banene appen trenger.

# Default deny all ingress to pods in namespace
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-ingress
  namespace: production
spec:
  podSelector: {}  # Matches all pods
  policyTypes:
  - Ingress

# Allow API pods to receive from frontend pods only
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: api-allow-frontend
spec:
  podSelector: {matchLabels: {app: api}}
  ingress:
  - from:
    - podSelector: {matchLabels: {app: frontend}}

Hurtigsjekk

Test forståelsen Deres av konseptene i Microsoft Azure Fundamentals (AZ-900) fra denne leksjonen.

Oppsummering av leksjonen

I denne leksjonen lærte De at AKS er en administrert Kubernetes-tjeneste der Microsoft drifter kontrollplanet, at Helm charts pakker Kubernetes-applikasjoner med flere ressurser for gjentakbar distribusjon, og at Cluster Autoscaler dynamisk legger til og fjerner noder basert på behovet for pod-planlegging. Neste steg er å utforske utløsere og bindinger i Azure Functions.

Gratis å komme i gang

Lær deg Cloud & IT Cert Prep med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
150
Leksjoner
600

Ofte stilte spørsmål

Er leksjonen «Distribuere arbeidsbelastninger på AKS» gratis?

Ja – hele teksten i «Distribuere arbeidsbelastninger på AKS» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Cloud & IT Cert Prep-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.

Hva lærer jeg i «Distribuere arbeidsbelastninger på AKS»?

Opprett en AKS-klynge, distribuer en applikasjon med flere containere ved hjelp av kubectl og Helm-diagrammer, og eksponer den eksternt med en Azure Load Balancer-tjeneste. Du øver på Cloud & IT Cert Prep med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Cloud & IT Cert Prep?

Ingen tidligere erfaring er nødvendig. Cloud & IT Cert Prep på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Distribuere arbeidsbelastninger på AKS»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Cloud & IT Cert Prep-leksjonen?

Ja. Alle Cloud & IT Cert Prep-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Azure Container Registry
  2. Azure Container Instances
  3. Kubernetes-konsepter for Azure
  4. Distribuere arbeidsbelastninger på AKS
← Tilbake til Cloud & IT Cert Prep