Sobes.tech
Middle+

Ako vytvoriť odolný Kubernetes cluster?

sobes.tech AI

Odpoveď od AI

Pre vytvorenie odolného Kubernetes klastru je potrebné zabezpečiť redundanciu kľúčových komponentov a dát.

Hlavné kroky:

  1. Master uzly:

    • Nasadiť niekoľko master uzlov (minimálne tri) pre komponent kube-apiserver, ktoré bežia za load balancerom. To zabezpečuje dostupnosť API servera aj pri zlyhaní jedného z master uzlov.
    • Každý master uzol musí mať prístup ku spoločnému úložisku stavu klastru — etcd.
  2. etcd:

    • Nasadiť cluster z viacerých uzlov (odporúča sa nepárny počet, minimálne tri), rozložených v rôznych zónach dostupnosti alebo na fyzických serveroch. To garantuje bezpečnosť dát o stave klastru.
  3. Load balancer:

    • Použiť L4/L7 load balancer na rozdelenie prevádzky medzi master uzly (kube-apiserver).
    • Použiť iný load balancer pre vstupnú prevádzku k aplikáciám v klasteri (napríklad Ingress Controller s podporou odolnosti voči zlyhaniu).
  4. Pracovné uzly (Worker Nodes):

    • Nasadiť dostatočný počet pracovných uzlov na spustenie Podov.
    • Rozložiť pracovné uzly v rôznych zónach dostupnosti alebo na fyzických serveroch, aby bola zabezpečená odolnosť voči zlyhaniam na úrovni infraštruktúry.
    • Nakonfigurovať Pod Disruption Budgets (PDBs), aby ste určili minimálny počet dostupných Podov počas dobrovoľných prerušenia (napríklad pri aktualizácii uzlov).
  5. Úložisko:

    • Používať distribuované úložisko alebo cloudové úložisko s vlastnou odolnosťou voči zlyhaniu pre Persistent Volumes.
    • Príklady: Rook (Ceph), GlusterFS, cloudoví poskytovatelia (AWS EBS, GCP Persistent Disk, Azure Managed Disks) s replikáciou.
  6. Sieť:

    • Používať spoľahlivé sieťové riešenie CNI s podporou odolnosti (napríklad Calico, Cilium s replikovanými komponentami).
    • Zabezpečiť spojenie medzi master uzlami, uzlami etcd a pracovnými uzlami.
  7. Zálohovanie:

    • Pravidelne vytvárať zálohy dát etcd.
    • Používať nástroje ako Velero na zálohovanie a obnovu stavu klastru a Persistent Volumes.

Príklad architektúry:

graph LR
    subgraph Používatelia
        A[Používateľ] --> B(Load balancer pre prevádzku aplikácií)
    end

    subgraph Kubernetes klaster
        subgraph Master uzly
            C1(Master uzol 1)
            C2(Master uzol 2)
            C3(Master uzol 3)
        end

        subgraph etcd klaster
            D1(etcd 1)
            D2(etcd 2)
            D3(etcd 3)
        end

        subgraph Pracovné uzly
            E1(Pracovný uzol 1)
            E2(Pracovný uzol 2)
            E3(Pracovný uzol 3)
        end

        subgraph Úložisko
            F(Distribuované úložisko)
        end

        subgraph Sieť
            G(CNI sieť)
        end

        B --> Bal(Load balancer API-servera)
        Bal --> C1
        Bal --> C2
        Bal --> C3

        C1 <--> D1
        C1 <--> D2
        C1 <--> D3
        C2 <--> D1
        C2 <--> D2
        C2 <--> D3
        C3 <--> D1
        C3 <--> D2
        C3 <--> D3

        C1 --> G
        C2 --> G
        C3 --> G

        E1 <--> G
        E2 <--> G
        E3 <--> G

        E1 <--> F
        E2 <--> F
        E3 <--> F

        G --> E1: Spustenie Podov
        G --> E2: Spustenie Podov
        G --> E3: Spustenie Podov

        E1 --> B: Prevádzka aplikácií
        E2 --> B: Prevádzka aplikácií
        E3 --> B: Prevádzka aplikácií
    end

Pri nasadení sa používajú nástroje na automatizáciu ako kubeadm, Kubespray alebo managed Kubernetes služby od cloudových poskytovateľov (EKS, GKE, AKS), ktoré uľahčujú vytváranie odolnej infraštruktúry.