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:
| 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 |
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.
kubectl get nodes
Sinun pitäisi nähdä yksi solmu listattuna (Docker Desktop -solmu).
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
kubectl apply -f nginx-deployment.yaml
kubectl apply -f nginx-service.yaml
kubectl get deployments
kubectl get pods
kubectl get services
Sinun pitäisi nähdä kaksi podia (koska replicas: 2) ja palvelu nimeltä nginx-service.
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.
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ä.