Uživatelské nástroje

Nástroje pro tento web


kubernates

Kubernetes (K8s)

Kubernetes je open-source platforma pro orchestraci kontejnerů. Umožňuje automatizovat nasazování, škálování a správu kontejnerizovaných aplikací. Původně byl vyvinut společností Google (založen na interním systému Borg) a nyní je spravován nadací CNCF.

Zatímco Docker definuje, jak kontejner vypadá, Kubernetes určuje, jak se kontejnery chovají v clusteru, jak spolu komunikují a jak se zotavují z chyb.

### 1. Architektura Clusteru Kubernetes cluster se skládá ze dvou hlavních částí:

  • Control Plane (Řídicí rovina): „Mozek“ clusteru. Rozhoduje o tom, kde se kontejnery spustí, sleduje stav clusteru a reaguje na události. Obsahuje komponenty jako API Server, etcd (databáze stavu), Scheduler a Controller Manager.
  • Worker Nodes (Pracovní uzly): Stroje (fyzické nebo virtuální), kde skutečně běží vaše aplikace. Každý uzel obsahuje službu Kubelet (komunikuje s řídicí rovinou) a Container Runtime (např. Docker nebo containerd).

### 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 úzce propojených kontejnerů, které sdílejí stejnou IP adresu a úložiště.
  • Deployment: Definuje požadovaný stav aplikace (např. „chci, aby vždy běžely 3 repliky mého webu“). Pokud jeden Pod spadne, Deployment zajistí spuštění nového.
  • Service: Zajišťuje stabilní síťovou adresu a balancování zátěže (Load Balancing) mezi skupinu Podů.
  • Namespace: Virtuální oddělení zdrojů uvnitř jednoho clusteru (např. vyvoj, test, produkce).

### 3. Deklarativní konfigurace (YAML) V Kubernetes neříkáme systému „spusť toto“, ale definujeme požadovaný stav v YAML souboru. Kubernetes pak neustále porovnává aktuální stav s tímto zadáním a provádí opravy.

Příklad jednoduchého Deploymentu:

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

### 4. Klíčové výhody

  • Self-healing (Samooprava): Pokud kontejner selže, K8s ho restartuje. Pokud uzel zemře, přesune kontejnery na jiný uzel.
  • Horizontální škálování: Automatické navyšování nebo snižování počtu běžících instancí podle zátěže (CPU/RAM).
  • Service Discovery: Aplikace se v síti najdou automaticky pomocí DNS jmen, bez nutnosti znát konkrétní IP adresy.
  • Automated Rollouts/Rollbacks: Snadné nasazování nových verzí bez výpadku (Rolling Update).

### 5. Správa pomocí kubectl Hlavním nástrojem pro ovládání clusteru je CLI utilita kubectl.

Příkaz Význam
kubectl get pods Zobrazí seznam běžících Podů.
kubectl apply -f soubor.yaml Nasadí nebo aktualizuje konfiguraci ze souboru.
kubectl logs <pod-name> Zobrazí logy z konkrétního kontejneru.
kubectl scale deployment web –replicas=5 Změní počet instancí aplikace na pět.
kubectl exec -it <pod-name> – bash Otevře interaktivní terminál uvnitř kontejneru.
Zajímavost: Číslo 8 v názvu K8s nahrazuje osm písmen mezi „K“ a „s“ ve slově „K-ubernete-s“ (tzv. numeronym).

Zpět na DevOps

kubernates.txt · Poslední úprava: autor: admin