====== Kubernetes (K8s) ====== **Kubernetes** je de facto standardem pro provozování aplikací v cloudu. Umožňuje automatizovat nasazování, škálování a správu kontejnerizovaných aplikací napříč clusterem serverů. ===== 1. Architektura Clusteru ===== Kubernetes cluster se skládá ze dvou hlavních částí: **Control Plane** (mozek) a **Worker Nodes** (výkonné jednotky). * **Control Plane:** * **API Server:** Vstupní brána pro veškerou komunikaci (příkazy z ''kubectl''). * **etcd:** Distribuovaná databáze (klíč-hodnota), která uchovává stav celého clusteru. * **Scheduler:** Rozhoduje, na který uzel (node) bude umístěn nový kontejner. * **Worker Nodes:** * **Kubelet:** Agent, který dohlíží na to, aby kontejnery na daném uzlu běžely. * **Kube-proxy:** Stará se o síťovou komunikaci a load balancing. --- ===== 2. Základní objekty (Abstrakce) ===== Kubernetes nepracuje přímo s kontejnery, ale s vyššími objekty: * **Pod:** Nejmenší jednotka v K8s. Může obsahovat jeden nebo více kontejnerů, které sdílejí síť a úložiště. * **Deployment:** Definuje požadovaný stav (např. "chci, aby vždy běžely 3 kopie tohoto Podu"). Pokud jeden Pod spadne, Deployment zajistí jeho znovuspuštění. * **Service:** Zajišťuje stabilní IP adresu a DNS název pro skupinu Podů (řeší load balancing). * **Ingress:** Pravidla pro přístup k aplikacím z vnějšího internetu (HTTP/HTTPS směrování). --- ===== 3. Klíčové vlastnosti (Proč K8s?) ===== * **Self-healing (Samooprava):** Pokud uzel selže, Kubernetes okamžitě přesune kontejnery na jiný funkční uzel. * **Horizontální škálování:** Automaticky zvyšuje nebo snižuje počet běžících kopií aplikace podle vytížení CPU nebo RAM. * **Automated Rollouts/Rollbacks:** Umožňuje nasadit novou verzi aplikace bez výpadku. Pokud se objeví chyba, lze se jedním příkazem vrátit k předchozí verzi. * **Service Discovery:** Podů se nemusí ptát na IP adresy ostatních služeb; vše je automaticky propojeno skrze DNS jména. --- ===== 4. Deklarativní konfigurace (YAML) ===== V Kubernetes neříkáte systému "udělej toto", ale definujete **cílový stav** pomocí YAML souborů. Kubernetes se pak neustále snaží, aby realita odpovídala této definici. apiVersion: apps/v1 kind: Deployment metadata: name: webova-aplikace spec: replicas: 3 template: spec: containers: - name: nginx image: nginx:1.21 --- ===== 5. Ekosystém a nástroje ===== ^ Nástroj ^ Účel ^ | **kubectl** | CLI nástroj pro ovládání clusteru z příkazové řádky. | | **Helm** | "Správce balíčků" pro Kubernetes (umožňuje instalovat složité aplikace jedním příkazem). | | **Minikube** | Nástroj pro spuštění lokálního jednodevítkového clusteru pro účely vývoje. | | **Lens** | Grafické rozhraní (IDE) pro vizuální správu clusteru. | ---- //Související články:// * [[it:sw:docker|Docker: Základní stavební kámen]] * [[it:sw:microservices|Architektura mikroslužeb]] * [[it:sw:distribuovane_systemy|Distribuované systémy a konsenzus]] //Tagy: {{tag>it kubernetes k8s cloud-native devops containers orchestration}}//