Cloud & IT Cert Prep · Oppitunti

Työkuormien käyttöönotto AKS:ssä

Luokaa AKS-klusteri, ottakaa monisäiliöinen sovellus käyttöön kubectlin ja Helm-kaavioiden avulla ja julkaiskaa se ulkoisesti Azure Load Balancer -palvelulla.

Oppitunti 4/413 vaihetta

Työkuormien käyttöönotto AKS:ssä on ilmainen Cloud & IT Cert Prep-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Cloud & IT Cert Prep-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cloud & IT Cert Prep-kurssilla on yhteensä 4 oppituntia.

Mikä on Azure Kubernetes Service?

Azure Kubernetes Service (AKS) on hallittu Kubernetes-palvelu, jossa Microsoft käyttää ja ylläpitää ohjaustasoa (API-palvelin, etcd ja ajoittaja) maksutta. Maksatte vain työntekijäsolmuista (VM:t). AKS huolehtii Kubernetes-versioiden päivityksistä, solmujen käyttöjärjestelmien korjauspäivityksistä, ohjaustason skaalauksesta sekä integroinnista Azuren verkko-, tallennus- ja identiteettipalveluihin. Tämä vähentää huomattavasti Kubernetesin tuotantokäytön operatiivista työmäärää.

AKS-klusterin luominen

Luo AKS-klusteri komennolla az aks create määrittämällä solmujen määrä, virtuaalikoneen koko ja verkkoasetukset. AKS luo automaattisesti solmujen resurssiryhmän, joka sisältää virtuaalikoneet, hallitut levyt, verkkoliitännät ja kuormantasaimet. Suositeltu verkkotila on Azure CNI — jokainen pod saa todellisen VNet-IP-osoitteen, mikä mahdollistaa suoran yhteyden muihin Azure-palveluihin ilman NATia.

# 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

Solmuryhmät

AKS-klustereissa voi olla useita solmuryhmiä eli virtuaalikoneiden ryhmiä, joilla on sama kokoonpano. Järjestelmäsolmuryhmä suorittaa Kubernetesin kriittisiä järjestelmäkomponentteja (kube-system-podit). Käyttäjän solmuryhmät suorittavat sovellustenne työkuormia. Erillisten ryhmien ansiosta voitte yhdistellä virtuaalikoneiden SKU-kokoja — käyttää yleiskäyttöistä ryhmää verkkosovelluksille ja GPU-ryhmää koneoppimisen työkuormille — ja skaalata niitä toisistaan riippumatta.

# 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

Monisäiliöisen sovelluksen käyttöönotto

Ottakaa monitasoinen sovellus käyttöön AKS:ssä kirjoittamalla kullekin tasolle erillinen Kubernetes-manifestitiedosto ja ottamalla ne käyttöön komennolla kubectl apply. Tyypillinen käyttöönotto sisältää verkkotasolle tarkoitetun Deployment-resurssin, API-tasolle tarkoitetun Deployment-resurssin, tasot yhdistävät Service-resurssit, ympäristöasetusten ConfigMap-resurssin sekä Ingress-resurssin, joka julkaisee sovelluksen ulkoisesti yhden isäntänimen kautta.

# 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 ja Application Gateway

Ingress-resurssi määrittää HTTP-reitityssäännöt, jotka yhdistävät isäntänimet ja URL-polut taustapalveluihin. Toisin kuin LoadBalancer-palvelu, joka käyttää yhtä ulkoista IP-osoitetta palvelua kohden, yksi Ingress-ohjain käsittelee kaiken ulkoisen HTTP-liikenteen ja reitittää sen sääntöjen perusteella. Käyttäkää AKS:ssä NGINX Ingress Controller -ohjainta tai Application Gateway Ingress Controller (AGIC) -ohjainta TLS:n päättämiseen ja liikenteen reitittämiseen useisiin palveluihin.

# 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-kaaviot sovellusten paketointiin

Helm on Kubernetesin paketinhallinta. Kaavio kokoaa kaikki sovelluksen Kubernetes-manifestit (Deployment-, Service-, Ingress- ja ConfigMap-resurssit) yhdeksi versioiduksi ja parametrisoitavaksi paketiksi. helm install ottaa kaavion käyttöön ympäristökohtaisten arvojen avulla. Artifact Hubin Helm-repositorio sisältää tuhansia valmiita kaavioita yleiseen infrastruktuuriin, kuten NGINX:ään, cert-manageriin, Prometheukseen ja Redisiin.

# 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

Vaiheittaiset päivitykset ja palautukset

Päivittäkää Deployment-resurssi vaihtamalla säilökuvan tunnistetta — Kubernetes suorittaa vaiheittaisen päivityksen luomalla päivitetyllä kuvalla varustettuja uusia podeja ja lopettamalla vanhoja vähitellen, joten sovellus pysyy käytettävissä koko ajan. Jos uusi versio ei toimi, voitte palauttaa aiemman version heti komennolla kubectl rollout undo. Kubernetes säilyttää kustakin Deployment-resurssista määritettävissä olevan versiohistorian.

# 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

Klusterin automaattinen skaalaus

Cluster Autoscaler lisää tai poistaa työntekijäsolmuja AKS:n solmuryhmästä automaattisesti odottavien podien ajoituksen ja solmujen käyttöasteen perusteella. Kun podeja ei voida ajoittaa, koska kaikki solmut ovat täynnä, Cluster Autoscaler ottaa käyttöön uusia solmuja. Kun solmujen käyttöaste on pieni ja podit voidaan yhdistää, se tyhjentää solmut ja poistaa ne. Tämä täydentää Horizontal Pod Autoscaleria: HPA skaalaa podeja ja Cluster Autoscaler solmuja.

# 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:n valvonta Azure Monitorilla

Ottakaa Azure Monitor Container Insights käyttöön, jotta voitte kerätä lokeja ja mittareita AKS-klusteristanne ilman kolmannen osapuolen valvontatyökalujen käyttöönottoa. Container Insights tarjoaa valmiit koontinäytöt klusterin kunnosta, solmujen ja podien suorittimen ja muistin käytöstä, säilölokeista sekä podien suoratoistosta reaaliajassa. Se integroituu Prometheukseen mukautettujen mittareiden keräämistä varten, ja kaikkia tietoja voi hakea KQL-kyselyillä Log Analyticsissa.

# 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:n RBAC ja Azure Active Directory

Integroikaa AKS Microsoft Entra ID:n kanssa, jotta voitte käyttää Azure AD:n käyttäjiä ja ryhmiä Kubernetesin RBAC-käyttöoikeuksien hallintaan. Erillisten Kubernetes-käyttäjätilien hallinnan sijaan määritätte ClusterRole- tai Role binding -sidontoja Entra ID:n objektitunnisteisiin. Kun kehittäjä suorittaa komennon kubectl, AKS vahvistaa hänen Entra ID -tunnuksensa. Tämä mahdollistaa keskitetyn identiteetinhallinnan ja integroituu ehdollisen käytön sekä monivaiheisen tunnistautumisen käytäntöihin.

# 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

Verkkokäytännöt pod-tason suojaukseen

Verkkokäytännöt ovat Kubernetes-resursseja, joilla hallitaan, mitkä podit voivat viestiä keskenään. Oletusarvoisesti kaikki klusterin podit voivat käyttää kaikkia muita podeja — verkkokäytännöt toimivat palomuurina pod-tasolla. Ottakaa AKS:ssä Azure-verkkokäytäntö tai Calico käyttöön käytäntöjen valvomista varten. Yleinen toimintamalli on default-deny-käytäntö, joka estää kaiken podien välisen liikenteen, minkä jälkeen sallitaan erikseen sovelluksen tarvitsemat yhteydet.

# 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}}

Pikatarkistus

Testaa, miten hyvin ymmärrät tällä oppitunnilla käsitellyt Microsoft Azure Fundamentals (AZ-900) -aiheet.

Oppitunnin kertaus

Tässä oppitunnissa opit, että AKS on hallittu Kubernetes-palvelu, jossa Microsoft käyttää ohjaustasoa, Helm-kaaviot paketoivat useista resursseista koostuvia Kubernetes-sovelluksia toistettavaa käyttöönottoa varten, ja Cluster Autoscaler lisää ja poistaa solmuja dynaamisesti podien ajoitustarpeen perusteella. Seuraavaksi tutustumme Azure Functions -funktioiden käynnistimiin ja sidontoihin.

Aloita maksutta

Opi Cloud & IT Cert Prep 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
150
Oppitunnit
600

Usein kysytyt kysymykset

Onko oppitunti ”Työkuormien käyttöönotto AKS:ssä” ilmainen?

Kyllä – oppitunnin ”Työkuormien käyttöönotto AKS:ssä” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Cloud & IT Cert Prep-kurssin, päivitä CoddyKit PROhon. Cloud & IT Cert Prep-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Työkuormien käyttöönotto AKS:ssä”?

Luokaa AKS-klusteri, ottakaa monisäiliöinen sovellus käyttöön kubectlin ja Helm-kaavioiden avulla ja julkaiskaa se ulkoisesti Azure Load Balancer -palvelulla. Harjoittelet Cloud & IT Cert Prep-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Cloud & IT Cert Prep-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Cloud & IT Cert Prep-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Työkuormien käyttöönotto AKS:ssä”-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ä Cloud & IT Cert Prep-oppitunnilla?

Kyllä. Jokainen Cloud & IT Cert Prep-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. Azure Container Registry
  2. Azure Container Instances
  3. Kubernetesin käsitteet Azuressa
  4. Työkuormien käyttöönotto AKS:ssä
← Takaisin: Cloud & IT Cert Prep