Docker
Kubernetes

Kubernetes on avoimen lähdekoodin orkestrointijärjestelmä konttien hallinnan, sijoittelun, skaalauksen ja reitityksen automatisointiin. Siitä on tullut erittäin suosittu kehittäjien ja IT-operaatiotiimien keskuudessa konttipohjaisten sovellusten luotettavaan ajamiseen laajassa mittakaavassa. Kubernetes toimii koneklustereiden (tai solmujen) yli, tukee vaiheittaisia päivityksiä (rolling updates), epäonnistuneiden komponenttien itsekorjausta, kuormituksen tasausta, resurssikiintiöitä ja paljon muuta.

Voit lukea lisää Kubernetesista viralliselta Kubernetes-verkkosivustolta: https://kubernetes.io/

Milloin valita Kubernetes Docker Composen sijaan:

  • Jos sovelluksesi täytyy toimia useilla palvelimilla (solmuilla) yhden isäntäkoneen sijaan.
  • Jos tarvitset korkean saatavuuden ja vikasietoisuuden — Kubernetes voi automaattisesti korvata epäonnistuneet kontit / podit, ajoittaa ne uudelleen terveille solmuille, jne.
  • Jos tarvitset horisontaalista skaalausta (automaattista skaalausta), eli replikoiden määrän kasvattamista/vähentämistä kuormituksen mukaan.
  • Jos haluat kehittyneitä käyttöönottomenetelmiä, kuten blue-green-käyttöönotot, canary-julkaisut, palautukset, versioidut päivitykset, jne.
  • Jos toimit pilvi- tai hybridiympäristöissä, joissa tarvitset yhtenäistä orkestrointia, verkotusta, tallennusta ja valvontaa monien palveluiden välillä.
  • Jos tarvitset kehittyneitä ominaisuuksia, kuten palveluiden löytäminen, sisäinen DNS, salaisuuksien hallinta, RBAC, resurssikiintiöt ja pysyvä tallennus solmujen vikaantumisten yli.

Ominaisuus Docker Compose Kubernetes
Laajuus Yksi isäntäkone, paikallinen kehitys, pienet projektit Usean isäntäkoneen klusterit, tuotantotason järjestelmät
Skaalaus Manuaalinen (docker-compose up --scale) Automaattinen horisontaalinen skaalaus kuormituksen perusteella
Korkea saatavuus Ei sisäänrakennettua, rajoitettu yhteen isäntäkoneeseen Itsekorjautuminen, uudelleenajoitus, replikointi solmujen välillä
Käyttöönottostrategiat Perus käynnistäminen/pysäyttäminen ja uudelleenkäynnistys Rullaavat päivitykset, canary-julkaisut, blue-green-käyttöönotot
Verkotus Yksinkertaiset silta-verkot yhdellä koneella Klusterinlaajuinen palveluiden löytäminen, sisäinen DNS, kuormituksen tasaus
Tallennus Volyymit yhdistetty isäntäkoneen hakemistoihin Pysyvät volyymit solmujen välillä, dynaaminen varaaminen
Käyttötarkoitus Paras kehitykseen, prototyyppeihin, pieniin sovelluksiin Paras tuotantokuormituksiin, suuriin ja hajautettuihin järjestelmiin

Esimerkki

Ennen sovellusten käyttöönottoa sinun täytyy ottaa Kubernetes käyttöön Docker Desktopissa. Avaa Docker Desktop → Settings → Kubernetes, valitse "Enable Kubernetes" ja odota, kunnes tila muuttuu Kubernetes is running. Kun se on otettu käyttöön, voit käyttää kubectl-komentorivityökalua paikallisen klusterisi hallintaan. Tämä esimerkki näyttää, kuinka otetaan käyttöön yksinkertainen Nginx-verkkopalvelin käyttäen Kubernetesia.

1. Varmista, että Kubernetes on käynnissä

kubectl get nodes

Sinun pitäisi nähdä yksi solmu listattuna (Docker Desktop -solmu).

2. Luo YAML-manifestit

nginx-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

nginx-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer

3. Ota manifestit käyttöön

kubectl apply -f nginx-deployment.yaml
kubectl apply -f nginx-service.yaml

4. Tarkista tila

kubectl get deployments
kubectl get pods
kubectl get services

Sinun pitäisi nähdä kaksi podia (koska replicas: 2) ja palvelu nimeltä nginx-service.

5. Käytä sovellusta

Koska Docker Desktop Kubernetes ei luo ulkoista LoadBalanceria, voit käyttää portin välitystä:

kubectl port-forward service/nginx-service 8080:80

Avaa nyt selaimesi osoitteessa http://localhost:8080 ja sinun pitäisi nähdä Nginxin tervetulosivu.


Tässä esimerkissä Kubernetesia käytetään Nginx-verkkopalvelimen käyttöönoton hallintaan. Yhden kontin manuaalisen ajamisen sijaan Kubernetes varmistaa, että kaksi replikaa Nginx-kontista ovat aina käynnissä. Jos yksi niistä epäonnistuu, Kubernetes käynnistää sen automaattisesti uudelleen. Service-määritys tekee sovelluksesta saavutettavan klusterin sisällä ja portin välityksen avulla saatavilla paikallisella koneellasi. Tämä osoittaa, miksi Kubernetes on hyödyllinen: se tarjoaa automaation, skaalauksen ja luotettavuuden, joita on vaikea saavuttaa, kun käynnistetään kontteja manuaalisesti Docker-komennoilla tai Docker Composella.

6. Pysäyttäminen ja siivous

Kun et enää tarvitse Nginx-esimerkkiä, voit pysäyttää ja poistaa Kubernetes-resurssit sulkematta koko Docker Desktop Kubernetes -klusteria.

1. Poista Kubernetes-resurssit

kubectl delete -f nginx-service.yaml
kubectl delete -f nginx-deployment.yaml

Tämä poistaa sekä Deploymentin (ja sen Podit) että Servicen. Voit varmistaa komennolla:

kubectl get pods
kubectl get services

2. Poista Docker-image (valinnainen)

docker rmi nginx:latest

Tämä poistaa nginx:latest-imagen paikallisesta Docker-välimuististasi. Jos se on vielä käytössä, Docker estää poistamisen, kunnes kaikki siihen liittyvät kontit on pysäytetty ja poistettu.

3. Pitääkö Kubernetes-klusteri pysäyttää?

Ei. Kubernetes-klusteria ei tarvitse pysäyttää Docker Desktopissa. Se voi turvallisesti jatkaa toimintaansa, ja poistat vain luomasi resurssit. Voit poistaa klusterin käytöstä vain, jos haluat säästää järjestelmäresursseja, kun Kubernetes ei ole käytössä.



Toggle Menu