Preskočiť na obsah

Docker a Kubernetes

Kontajnerizácia aplikácií a ich orchestrácia ako základ moderného nasadzovania softvéru.


  • Docker


    Zabalí aplikáciu aj so závislosťami do izolovaného kontajnera.

  • Kubernetes


    Riadi životný cyklus stoviek kontajnerov naraz.

  • Docker Repository


    Súkromný Harbor registry na ukladanie vašich images.

    Prejsť

  • ML TUKE


    Kubeflow beží nad Kubernetes a používa Docker images.

    Prejsť


Čo je Docker?

Docker zabalí aplikáciu do kontajnera, ktorý obsahuje všetky potrebné knižnice, konfigurácie a runtime. Aplikácia potom funguje rovnako na každom serveri, bez ohľadu na to, kde je spustená.

Rýchly štart

Kontajner nabehne v milisekundách až sekundách, pretože nezavádza celý operačný systém.

Nízka spotreba

Zdieľa jadro hostiteľského systému, takže na jednom serveri zbehne veľa kontajnerov.

Prenositeľnosť

Ten istý image beží na notebooku vývojára, v CI aj na produkčnom serveri.

Izolácia

Aplikácie sa navzájom neovplyvňujú, konflikty knižníc odpadajú.


Na čo sa Docker používa

Použitie Príklad
Webové služby Nginx, API backendy, mikroslužby
Databázy PostgreSQL, MySQL, Redis v izolácii
Testovanie Paralelný beh viacerých verzií aplikácie
CI/CD GitLab CI, GitHub Actions, automatické buildy
Výučba Jednotné prostredie pre celý ročník

Nevýhody a limity

Kde Docker nie je vhodný

  • Nižšia izolácia než plnohodnotný virtuálny stroj, keďže zdieľa jadro OS
  • Nie je náhrada za desktopový systém ani za plnohodnotné OS
  • Neposkytuje automatické škálovanie ani self-healing: to rieši až orchestrátor
  • Kontajnery sú krátkodobé: dáta treba ukladať do volumes

Čo je Kubernetes?

Kubernetes (K8s) je orchestrátor kontajnerov. Kontajnery nevytvára, ale riadi ich životný cyklus, škálovanie, dostupnosť a komunikáciu.

Zjednodušene

Docker = balenie a spúšťanie aplikácií Kubernetes = správa stoviek až tisícov kontajnerov

Kubernetes rieši to, čo Docker sám nedokáže:

  • automatické reštarty pri chybe
  • škálovanie podľa záťaže
  • rozdeľovanie požiadaviek medzi kontajnery
  • self-healing: nahradenie spadnutého kontajnera
  • roll-out a roll-back verzií
  • správu konfigurácií a tajomstiev
  • networking medzi službami v klastri

Porovnanie

Oblasť Docker Kubernetes
Primárny účel Kontajnerizácia aplikácie Orchestrácia kontajnerov
Rozsah Jednotlivé kontajnery Tisíce kontajnerov naraz
Ovládanie Manuálne / Compose Automatické, deklaratívne
Zotavenie pri páde Žiadne Self-healing
Škálovanie Základné Automatické (HPA)
Aktualizácie Manuálne Rolling updates + rollback
Sieť Jednoduchá Rozsiahla virtuálna sieť
Vhodné pre Vývoj, testovanie, menšie služby Veľké systémy, produkcia

Kedy použiť čo?

  • Použi Docker, ak...


    • chcete rýchlo spustiť aplikáciu
    • testujete vývoj alebo knižnice
    • prevádzkujete menší projekt
    • potrebujete izolovať prostredie
    • stačí vám jeden server
  • Použi Kubernetes, ak...


    • potrebujete škálovať aplikácie
    • máte mikroslužby alebo veľké API
    • potrebujete vysokú dostupnosť
    • chcete automatizáciu a self-healing
    • aplikácia musí bežať bez výpadkov

Ako spolu súvisia

graph LR
    A[Dockerfile] --> B[Docker build]
    B --> C[Image v Harbor]
    C --> D[Kubernetes pull]
    D --> E[Beziaci kontajner]
    E --> F[Monitoring a self-healing]
    F --> D
  1. Docker vytvorí image z Dockerfile
  2. Image sa nahrá do registry (TUKE Harbor)
  3. Kubernetes image stiahne
  4. Kubernetes spustí kontajnery podľa definície (Deployment, StatefulSet…)
  5. Kubernetes sleduje ich zdravie a pri páde ich nahradí
  6. Pri raste záťaže pridá ďalšie kópie

Ďalšie kroky

  • Práca s Docker images


    Build, tag, push a pull v TUKE Harbor.

    Návod

  • Ubuntu


    Docker beží najlepšie na Ubuntu Server.

    Viac info