Azure Fundamentals · Oppitunti

Kubernetesin käsitteet Azuressa

Kerratkaa Kubernetesin keskeiset rakenteet — podit, käyttöönotot, palvelut ja nimiavaruudet — ja perehtykää siihen, miten AKS hallinnoi ohjaustasoa puolestanne.

Oppitunti 3/413 vaihetta

Kubernetesin käsitteet Azuressa on ilmainen Azure Fundamentals-oppitunti CoddyKitissä. Tämä on oppitunti 3/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 Azure Fundamentals-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Azure Fundamentals-kurssilla on yhteensä 4 oppituntia.

Mikä Kubernetes on

Kubernetes (K8s) on avoimen lähdekoodin konttien orkestrointialusta, jonka Google kehitti alun perin. Se automatisoi kontitettujen sovellusten käyttöönoton, skaalauksen ja hallinnan. Sen sijaan, että kontteja suoritettaisiin manuaalisesti, sovelluksen haluttu tila määritetään YAML-manifesteissa, ja Kubernetes pyrkii jatkuvasti vastaamaan toteutunutta tilaa haluttuun tilaan — käynnistämällä vikaantuneet kontit uudelleen, ajoittamalla työkuormat terveille solmuille ja skaalaamalla replikoita.

Klusterin arkkitehtuuri: ohjaustaso ja solmut

Kubernetes-klusteri koostuu ohjaustasosta ja työntekijäsolmuista. Ohjaustaso sisältää API-palvelimen (kaikkien kubectl-komentojen sisääntulopiste), etsd:n (hajautetun tilavaraston), ajoittimen (määrittää podit solmuille) ja ohjainhallinnan (ylläpitää haluttua tilaa). Työntekijäsolmuissa suoritetaan kubelet (solmuagentti), kube-proxy (verkkoasetukset) ja kontin ajonaikainen ympäristö (containerd). AKS:ssä Microsoft hallitsee ohjaustasoa — hallitset vain työntekijäsolmuja.

# Kubernetes control plane components
# kube-apiserver    - REST API for all cluster operations
# etcd              - Distributed key-value store (cluster state)
# kube-scheduler    - Assigns pending pods to nodes
# kube-controller-manager  - Runs reconciliation controllers

# Worker node components
# kubelet           - Node agent, ensures containers run
# kube-proxy        - Network routing for services
# containerd        - Container runtime (runs containers)

Podit: pienin käyttöönotettava yksikkö

Pod on Kubernetesin pienin käyttöönotettava yksikkö. Pod sisältää yhden tai useamman kontin, jotka jakavat verkkonimitilan (saman IP-osoitteen), taltion ja elinkaaren. Podin sisäiset kontit viestivät localhost-osoitteen kautta. Podit ovat lyhytikäisiä — niiden vikaantuessa ne korvataan uusilla podeilla, joilla on eri IP-osoitteet. Podeja luodaan harvoin suoraan; sen sijaan luodaan ylemmän tason resursseja, jotka hallitsevat podeja.

# Simple pod manifest
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp
    image: mycontainerregistry.azurecr.io/myapp:v1.0
    ports:
    - containerPort: 80
    resources:
      requests:
        cpu: '100m'
        memory: '128Mi'
      limits:
        cpu: '500m'
        memory: '512Mi'

Deploymentit: replikasettien hallinta

Deployment on vakiotapa suorittaa tilattomia sovelluksia Kubernetesissa. Se luo ja hallitsee ReplicaSet-resurssia, joka ylläpitää haluttua määrää samanlaisia pod-replikoita. Deploymentit tukevat vaiheittaisia päivityksiä — vanhat podit korvataan vähitellen uusilla — ja palautuksia aiempiin versioihin. Kuvaat halutun pod-mallin ja replikoiden määrän, ja Kubernetes hoitaa loput.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1       # Create 1 extra pod during update
      maxUnavailable: 0 # Never reduce below desired count
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: mycontainerregistry.azurecr.io/myapp:v1.0
        ports:
        - containerPort: 80

Palvelut: vakaat verkkopäätepisteet

Koska podit ovat lyhytikäisiä ja niiden IP-osoitteet muuttuvat, Services-resurssit tarjoavat vakaan verkkopäätepisteen, joka jakaa liikenteen vastaaville podeille. Palvelu käyttää tunnistevalitsinta löytääkseen podit. Palvelutyypit ovat: ClusterIP (vain sisäinen, oletus), NodePort (avaa portin jokaisessa solmussa), LoadBalancer (varaa julkisella IP-osoitteella varustetun Azure Load Balancerin) ja ExternalName (DNS-alias ulkoiseen palveluun).

# Service exposing myapp pods externally
apiVersion: v1
kind: Service
metadata:
  name: myapp-svc
spec:
  type: LoadBalancer  # Creates Azure Load Balancer
  selector:
    app: myapp        # Routes traffic to pods with this label
  ports:
  - port: 80          # Service port
    targetPort: 80    # Pod/container port

# After creation, check the EXTERNAL-IP (Azure LB public IP)
# kubectl get service myapp-svc

Nimitilat monen asiakkaan ympäristöissä

Nimitilat jakavat yhden Kubernetes-klusterin useiksi virtuaaliklustereiksi. Eri nimitilojen resurssit on eristetty nimien perusteella — voit käyttää samanaikaisesti myapp-Deploymentia sekä development- että production-nimitilassa. Nimitilat ovat ensisijainen yksikkö RBAC:n, resurssikiintiöiden ja verkkokäytäntöjen kohdistamiseen tiimille tai ympäristölle. Oletusnimitiloja ovat esimerkiksi default, kube-system ja kube-public.

# Create a namespace for the dev team
kubectl create namespace dev-team

# Deploy into a specific namespace
kubectl apply -f deployment.yaml --namespace dev-team

# List all resources in a namespace
kubectl get all --namespace dev-team

# Set default namespace for current context
kubectl config set-context --current --namespace dev-team

ConfigMapit ja Secretit

ConfigMapit tallentavat ei-arkaluonteisia asetustietoja avain–arvo-pareina tai tiedostoina, jotka välitetään podeille ympäristömuuttujina tai taltion liitoksina. Secretit tallentavat arkaluonteisia tietoja (salasanoja ja tunnuksia) base64-koodattuina (ei oletusarvoisesti salattuina — käytä Azure Key Vault Provider for Secrets Store CSI Driver -komponenttia todelliseen lepotilassa olevan tiedon salaukseen). Molemmat ovat nimitilakohtaisia, ja pod-määritykset viittaavat niihin nimen perusteella.

# Create a ConfigMap from literal values
kubectl create configmap app-config \
  --from-literal=APP_ENV=production \
  --from-literal=LOG_LEVEL=info

# Create a Secret
kubectl create secret generic db-secret \
  --from-literal=DB_PASSWORD='super-secret'

# Reference in a pod spec
# env:
# - name: APP_ENV
#   valueFrom:
#     configMapKeyRef:
#       name: app-config
#       key: APP_ENV
# - name: DB_PASSWORD
#   valueFrom:
#     secretKeyRef:
#       name: db-secret
#       key: DB_PASSWORD

Pysyvät taltiot Azuressa

Tilalliset sovellukset tarvitsevat tallennustilaa, joka säilyy yksittäisten podien elinkaaren yli. Kubernetes käyttää PersistentVolumes (PV)- ja PersistentVolumeClaims (PVC)-resursseja irrottamaan tallennustilan podin elinkaaresta. AKS:ssä sisäänrakennetut Azure Disk- ja Azure Files -tallennusluokat varaavat hallitut levyt ja tiedostojaot automaattisesti, kun PVC luodaan. Azure Disk on tarkoitettu yhden podin käyttöön, kun taas Azure Files tukee useita podeja, jotka lukevat ja kirjoittavat samanaikaisesti.

# PersistentVolumeClaim using Azure Disk
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-disk-pvc
spec:
  accessModes:
  - ReadWriteOnce   # Single-node read/write (Azure Disk)
  storageClassName: managed-csi
  resources:
    requests:
      storage: 10Gi

# Mount in a pod
# volumes:
# - name: data
#   persistentVolumeClaim:
#     claimName: my-disk-pvc
# volumeMounts:
# - name: data
#   mountPath: /data

Horizontal Pod Autoscaler

Horizontal Pod Autoscaler (HPA) säätää automaattisesti Deploymentin pod-replikoiden määrää havaitun suorittimen tai muistin käyttöasteen tai mukautettujen mittareiden perusteella. HPA-ohjain kysyy metrics serveriltä tietoja 15 sekunnin välein ja lisää tai vähentää replikoita, jotta käyttöaste pysyy lähellä tavoitetta. Asetat replikoiden vähimmäis- ja enimmäismäärät rajoiksi, jotka estävät hallitsemattoman skaalauksen.

# Create an HPA targeting 50% CPU utilisation
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp
  minReplicas: 2
  maxReplicas: 20
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

Kuntotarkistukset: liveness- ja readiness-probet

Kubernetes käyttää probeja konttien kunnon valvontaan. Liveness-probe tarkistaa, onko kontti edelleen käynnissä — jos tarkistus epäonnistuu, Kubernetes käynnistää kontin uudelleen. Readiness-probe tarkistaa, onko kontti valmis palvelemaan liikennettä — jos tarkistus epäonnistuu, pod poistetaan Servicen kuormantasauksesta ilman uudelleenkäynnistystä. Startup-probe viivästyttää muita probeja, kunnes sovellus on alustettu, mikä estää hitaasti käynnistyvän sovelluksen ennenaikaiset uudelleenkäynnistykset.

livenessProbe:
  httpGet:
    path: /health
    port: 80
  initialDelaySeconds: 15
  periodSeconds: 20
  failureThreshold: 3

readinessProbe:
  httpGet:
    path: /ready
    port: 80
  initialDelaySeconds: 5
  periodSeconds: 10
  failureThreshold: 3

startupProbe:
  httpGet:
    path: /startup
    port: 80
  failureThreshold: 30
  periodSeconds: 10  # Allow 300s for slow startup

Resurssipyynnöt ja -rajoitukset

Jokaisen Kubernetes-kontin tulisi ilmoittaa resurssipyynnöt (ajoittimen käyttämä taattu vähimmäisvaraus) ja rajoitukset (suurin sallittu määrä, jonka ylityttyä kontin käyttöä rajoitetaan tai kontti lopetetaan). Suorittimen pyynnöt ilmoitetaan milliytimissä (m) — 1000m = 1 suorittimen ydin. Pyyntöjen ja rajoitusten tarkka määrittäminen estää häiritsevän naapurin ongelmat ja mahdollistaa podien tehokkaan sijoittamisen solmuille ilman resurssien ylivaraamista.

resources:
  requests:
    cpu: '250m'      # 0.25 CPU core guaranteed
    memory: '256Mi'  # 256 MiB guaranteed
  limits:
    cpu: '1'         # Max 1 CPU core
    memory: '512Mi'  # Max 512 MiB (OOMKilled if exceeded)

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ä podit ovat pienimpiä käyttöönotettavia yksiköitä, jotka jakavat verkon ja tallennustilan, Deployment-resurssit hallitsevat tilattomia replikasarjoja ja tukevat vaiheittaisia päivityksiä, ja Service-resurssit tarjoavat vakaat päätepisteet ja jakavat liikennettä lyhytikäisten podien kesken. Seuraavaksi tutustumme työkuormien käyttöönottoon AKS:ssä.

Aloita maksutta

Opi Azure Fundamentals 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 ”Kubernetesin käsitteet Azuressa” ilmainen?

Kyllä – oppitunnin ”Kubernetesin käsitteet Azuressa” 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 Azure Fundamentals-kurssin, päivitä CoddyKit PROhon. Azure Fundamentals-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Kubernetesin käsitteet Azuressa”?

Kerratkaa Kubernetesin keskeiset rakenteet — podit, käyttöönotot, palvelut ja nimiavaruudet — ja perehtykää siihen, miten AKS hallinnoi ohjaustasoa puolestanne. Harjoittelet Azure Fundamentals-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Azure Fundamentals-opiskelun?

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

Kuinka kauan ”Kubernetesin käsitteet Azuressa”-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ä Azure Fundamentals-oppitunnilla?

Kyllä. Jokainen Azure Fundamentals-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: Azure Fundamentals