Files
knowledge-base/KUBERNETES.md
Stanislav Hubacek ef3c2f75b1 18.6.2026
2026-06-18 16:25:33 +02:00

14 KiB

☸ Kubernetes — architektura, platformy, Cluster API

Přehled

Kubernetes (K8s) je open-source orchestrátor kontejnerů — de facto standard pro nasazování, škálování a správu containerizovaných aplikací. Postaven na modelu deklarativní konfigurace a control loopů (reconciliation).

Způsoby nasazení Kubernetes

Metoda Popis Správa control plane Vhodné pro
kubeadm Oficiální nástroj pro bootstrap K8s clusteru Self-managed (stacked/external etcd) On-prem, lab, learning
K3s Lightweight K8s (Rancher), single binary, embedded etcd/SQLite Self-managed Edge, IoT, low-resource, HA s embedded etcd
RKE2 Rancher Kubernetes Engine 2, CIS-hardened, FIPS-ready Self-managed Enterprise on-prem, air-gapped, regulatory
OpenShift Red Hat enterprise K8s + operator lifecycle + SDN + routing Self-managed (RHCOS) Enterprise, multicluster, platform engineering
Vanilla K8s (CAPI) Cluster API — deklarativní provisioning a lifecycle management Self-managed (CAPI managed) Fleet management, GitOps, multi-provider
EKS (AWS) Managed K8s AWS managed AWS cloud-native, nejméně ops
AKS (Azure) Managed K8s Azure managed Azure cloud-native
GKE (GCP) Managed K8s, auto-pilot, autopilot modes GCP managed GCP cloud-native
SKE (Sangfor) Managed K8s on Sangfor HCI Vendor managed Sangfor HCI ekosystém

Cluster API (CAPI)

Co je Cluster API

Cluster API je Kubernetes sub-projekt (SIG Cluster-Lifecycle), který přináší deklarativní API pro provisioning, upgrade a operace Kubernetes clusterů. Místo Terraform skriptů nebo manuálního kubeadm definujete cluster jako Kubernetes Custom Resources — Cluster, Machine, MachineDeployment atd.

Princip: Kubernetes cluster, který spravuje Kubernetes clustery.

Architektura

┌─────────────────────────────────────────┐
│           Management Cluster            │
│                                         │
│  ┌──────────────────────────────────┐   │
│  │        CAPI Controllers          │   │
│  │  ┌──────┐ ┌──────┐ ┌─────────┐  │   │
│  │  │ Infra│ │Bootstrap│ │Control  │  │   │
│  │  │ Prov │ │ Prov   │ │Plane Pr │  │   │
│  │  └──────┘ └──────┘ └─────────┘  │   │
│  └──────────────────────────────────┘   │
│                                         │
│  CR: Cluster, Machine, MachineDeployment│
│  ...                                    │
└────────────────┬────────────────────────┘
                 │ CAPI controller
                 │ vytváří / spravuje
        ┌────────┴────────┐
        ▼                 ▼
┌───────────────┐  ┌───────────────┐
│ Workload      │  │ Workload      │
│ Cluster (dev) │  │ Cluster (prod)│
│ ┌───┐ ┌───┐   │  │ ┌───┐ ┌───┐   │
│ │ CP│ │ W │   │  │ │ CP│ │ W │   │
│ └───┘ └───┘   │  │ └───┘ └───┘   │
└───────────────┘  └───────────────┘
  • Management cluster — Kubernetes cluster, kde běží CAPI controllery. Může to být vyhrazený "admin" cluster (často velmi malý).
  • Workload (managed) cluster — Kubernetes clustery, které CAPI spravuje. Každý je reprezentován jako CRD v management clusteru.
  • Machine — abstrakce compute jednotky (VM, bare metal), která se stane K8s uzlem.

Klíčové CRD (Custom Resource Definitions)

CRD API skupina Účel
Cluster cluster.x-k8s.io Reprezentace clusteru (infra reference, control plane ref, networking)
Machine cluster.x-k8s.io Jednotlivý uzel (VM/BM instance)
MachineDeployment cluster.x-k8s.io Deklarativní škálování a rolling update workerů
MachineSet cluster.x-k8s.io Replica set pro Machiny (lower-level)
MachineHealthCheck cluster.x-k8s.io Auto-remediaci (automatické nahrazení unhealthy uzlu)
ClusterClass cluster.x-k8s.io Šablona pro vytváření clusterů
KubeadmControlPlane controlplane.cluster.x-k8s.io Control plane managed kubeadm (stacked/external etcd)
KubeadmConfig / KubeadmConfigTemplate bootstrap.cluster.x-k8s.io Bootstrap konfigurace (kubeadm init/join)

Provider model

CAPI používá třívrstvý provider model:

1. Infrastructure Provider

Vytváří a spravuje infrastrukturu (VM, sítě, LB, storage).

Provider Platforma Status
AWS (CAPA) AWS EC2, VPC, ELB, EKS Stable, SIG-sponsored
Azure (CAPZ) Azure VM, VNet, LB, AKS Stable, SIG-sponsored
GCP (CAPG) GCP Compute, VPC, GKE Beta
vSphere (CAPV) VMware vSphere Stable
OpenStack (CAPO) OpenStack compute/network Stable
Metal3 Bare metal (Ironic) Stable
Docker (CAPD) Docker containers (development) Tilt/Dev only
Akamai (Linode) Linode Community
Azure Stack HCI Azure Stack HCI Community
cloudscale cloudscale.ch Community
Exoscale Exoscale Community
IBM Cloud IBM Cloud Community
Equinix Metal Equinix (ex Packet) Community
Hetzner Hetzner Cloud Community
OpenNebula OpenNebula Community

2. Bootstrap Provider

Zajišťuje inicializaci K8s na node (kubeadm init/join, TLS certs, tokeny).

Provider Popis
Kubeadm (vestavěný) Standardní kubeadm init/join, podpora stacked/external etcd
EKS Bootstrap pro EKS managed control plane (AWS)
K3s Lightweight K8s bootstrap (edge, IoT)
RKE2 Rancher K8s bootstrap, CIS-hardened
Talos API-driven bootstrap (Sidero Labs), immutable OS
k0smotron K0s-based bootstrap + hosted control plane
MicroK8s Canonical MicroK8s bootstrap
Canonical Kubernetes Canonical K8s (snap-based)

3. Control Plane Provider

Spravuje control plane uzly.

Provider Popis
KubeadmControlPlane (vestavěný) Kubeadm-managed CP, stacked/external etcd
EKS AWS EKS managed control plane
Kamaji Hosted control plane (CP běží jako deployment v management clusteru)
K3s K3s control plane (edge-optimized)
RKE2 RKE2 control plane
Talos Talos control plane, API-based management
k0smotron Hosted control plane (k0s-based)
Nested Nested virtualization control plane

ClusterClass a Managed Topologies

ClusterClass (stabilní od CAPI v1beta1, CAPI v1.0+) umožňuje definovat šablonu clusteru:

apiVersion: cluster.x-k8s.io/v1beta1
kind: ClusterClass
metadata:
  name: standard-aws-cluster
spec:
  controlPlane:
    ref:
      apiVersion: controlplane.cluster.x-k8s.io/v1beta1
      kind: KubeadmControlPlaneTemplate
      name: aws-cp-tmpl
    machineInfrastructure:
      ref:
        kind: AWSMachineTemplate
        apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
        name: aws-cp-machine-tmpl
  workers:
    machineDeployments:
    - class: default-worker
      template:
        bootstrap:
          ref:
            apiVersion: bootstrap.cluster.x-k8s.io/v1beta1
            kind: KubeadmConfigTemplate
            name: aws-worker-bootstrap-tmpl
        infrastructure:
          ref:
            apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
            kind: AWSMachineTemplate
            name: aws-worker-machine-tmpl
  variables:
    - name: instanceType
      required: true
      schema:
        openAPIV3Schema:
          type: string
          enum: ["t3.large", "m5.large", "m5.xlarge"]

Pak lze vytvořit cluster s přetížením proměnných:

apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
metadata:
  name: dev-team-alpha
  namespace: clusters
spec:
  topology:
    class: standard-aws-cluster
    version: v1.30.2
    controlPlane:
      replicas: 1
    workers:
      machineDeployments:
      - class: default-worker
        name: md-0
        replicas: 2
    variables:
      - name: instanceType
        value: "m5.xlarge"

Životní cyklus clusteru s CAPI

Fáze Akce CAPI mechanismus
Create kubectl apply -f cluster.yaml Controller vytvoří infra (VM, network), provede bootstrap kubeadm init/join
Scale Upravit replicas v MachineDeployment Controller vytvoří/odstraní Machine → VM → node join/drain
Upgrade Změnit version v KubeadmControlPlane / MachineDeployment Rolling update: nový CP node → upgrade → starý drain a delete. Workers: MachineDeployment rolling update
Health check MachineHealthCheck Pokud node unhealthy > timeout, controller vytvoří náhradní Machine
Delete kubectl delete cluster Controller provede drain, delete VMs, cleanup infrastruktury
Template update Změna AWSMachineTemplate / KubeadmConfigTemplate Stroj se vytvoří s novou šablonou; stávající Machiny se dotýká jen přes rolling update

Auto-remediace (MachineHealthCheck)

apiVersion: cluster.x-k8s.io/v1beta1
kind: MachineHealthCheck
metadata:
  name: prod-mhc
  namespace: clusters
spec:
  clusterName: prod-us-east
  selector:
    matchLabels:
      cluster.x-k8s.io/deployment-name: prod-us-east-workers
  unhealthyConditions:
  - type: Ready
    status: "False"
    timeout: 5m
  - type: Ready
    status: Unknown
    timeout: 5m
  maxUnhealthy: "40%"
  nodeStartupTimeout: 10m

CAPI + GitOps

CAPI se přirozeně integruje s GitOps:

  • ArgoCD — Cluster a MachineDeployment manifesty v Git repozitáři, ArgoCD je aplikuje na management cluster
  • FluxKustomization + OCIRepository pro CAPI objekty
  • Crossplane — lze kombinovat: Crossplane pro provisioning cloud resources (VPC, subnets), CAPI pro K8s cluster na nich

Vzor: vyhrazený "fleet management" cluster, na kterém běží CAPI + ArgoCD. Všechny workload clustery jsou definované jako YAML v Gitu.

CAPI pro on-prem

Provider Use case Poznámka
Metal3 (Ironic) Bare metal provisioning (PXE, IPMI, Redfish) Automatické provisionování BM serverů jako K8s nodes
CAPV (vSphere) VMware VM jako K8s nodes Většina enterprise on-prem
CAPO (OpenStack) OpenStack VM jako K8s nodes OpenStack-native
Nutanix (CAPNX) Nutanix AHV/Prism Community provider

CAPI pro edge

Provider Use case Poznámka
K3s bootstrap + control plane Lightweight K8s na edge zařízeních Single binary, SQLite/embedded etcd
RKE2 bootstrap + control plane Enterprise edge, air-gapped CIS-hardened, FIPS
Talos Immutable OS, API-driven Minimal footprint, no SSH
k0smotron Hosted control plane pro edge clustery CP běží v management clusteru, worker na edge

CAPI vs alternativy

Nástroj Přístup CAPI výhoda CAPI nevýhoda
Terraform/Pulumi Imperativní/declarativní IaC CAPI je K8s-native — stejný nástroj pro appky i clustery; GitOps ready Terraform má širší podporu non-K8s resources
kubeadm Manuální nebo skriptovaný CAPI automatizuje celý lifecycle včetně upgradů a remediací Vyšší komplexita, nutný management cluster
Rancher Web UI + API pro správu K8s clusterů CAPI je open-source, vendor-neutral Rancher má GUI, monitoring, katalog appek
OpenShift Hive/ACM Red Hat Advanced Cluster Management CAPI je standardní (SIG) — širší provider ecosystem ACM má governance, policy, compliance

Limitations a maturity

  • Management cluster je SPOF — musí mít vlastní HA a backup (etcd zálohy, certifikáty)
  • CAPI není cluster autoscaler — řeší lifecycle clusterů, ne auto-scaling podů v rámci clusteru (používá se Cluster Autoscaler samostatně)
  • Provider maturity se liší — AWS/Azure/vSphere stabilní, GCP/OpenStack beta, některé community providers alpha
  • etcd backup není built-in — nutné řešit externě (Velero, etcd snapshot)
  • CAPI neřeší aplikace — pouze lifecycle K8s clusterů (monitoring, logging, ingress si řídí uživatel)
  • Learning curve — nutnost management clusteru, pochopení provider modelu, CRDs
  • CAPI v1.13+ (2026) — stable release, v1beta1 API je GA, ClusterClass stable, EKS/AKS/GKE managed control plane podpora

Doporučený stack pro CAPI v produkci

Komponenta Doporučení
Management cluster K3s (malý footprint) nebo kubeadm (3 nodes HA)
Infra provider CAPA (AWS) / CAPV (vSphere) / CAPO (OpenStack) — dle platformy
Bootstrap/CP provider Kubeadm nebo RKE2
GitOps ArgoCD nebo Flux
Backup Velero + restic/Ceph
Cluster autoscaler Cluster Autoscaler (přes CAPI integration)
Network Cilium (CAPI-native, podpora)
Secrets External Secrets Operator / Sealed Secrets
Monitoring Prometheus + Grafana (kube-prometheus-stack)
Ingress ingress-nginx / Kong / Traefik

Zdroje

Odkazy, knihy a standardy: sources/infrastructure/sources.md

Poslední revize: 2026-06-18