Sobes.tech
Middle+

Kaip sukurti atsparų Kubernetes klasterį?

sobes.tech AI

Atsakymas iš AI

Sukurti atsparų ir patikimą Kubernetes klasterį, būtina užtikrinti pagrindinių komponentų ir duomenų perteklinį kiekį.

Pagrindiniai žingsniai:

  1. Meistrų mazgai:

    • Įdiegti kelis meistrų mazgus (kube-apiserver komponentui), kurie veikia už apkrovos balansavimo įrenginio. Tai užtikrina API serverio prieinamumą net ir sugriuvus vienam meistrų mazgui.
    • Kiekvienas meistrų mazgas turi turėti prieigą prie bendro klasterio būsenos saugyklos — etcd.
  2. etcd:

    • Įdiegti kelių mazgų etcd klasterį (geriausia, jei jų yra ne mažiau trijų), išsidėsčiusį skirtingose zonose ar fiziniuose serveriuose. Tai garantuoja duomenų saugumą.
  3. Krovinių paskirstymo įrenginys (Load Balancer):

    • Naudoti L4/L7 krovinių paskirstymo įrenginį, kuris paskirsto srautą tarp kube-apiserver mazgų.
    • Naudoti kitą paskirstymo įrenginį, skirtą įeinančiam srautui į klasterio programas (pvz., Ingress Controller, kuris palaiko atsparumą).
  4. Darbo mazgai (Worker Nodes):

    • Įdiegti pakankamai darbo mazgų, kad galėtų paleisti Pod'us.
    • Išdėstyti darbo mazgus skirtingose zonose ar fiziniuose serveriuose, siekiant užtikrinti infrastruktūros atsparumą gedimams.
    • Nustatyti Pod Disruption Budgets (PDBs), kad būtų nustatytas minimalus prieinamų Pod'ų skaičius per savanoriškus sutrikimus (pvz., atnaujinant mazgus).
  5. Saugykla (Storage):

    • Naudoti paskirstytą arba debesų saugyklą su savo atsparumu, skirta Persistent Volumes.
    • Pavyzdžiai: Rook (Ceph), GlusterFS, debesų teikėjai (AWS EBS, GCP Persistent Disk, Azure Managed Disks) su replikacija.
  6. Tinklas (Networking):

    • Naudoti patikimą CNI tinklo sprendimą (pvz., Calico, Cilium su replikacijomis).
    • Užtikrinti ryšį tarp meistrų mazgų, etcd mazgų ir darbo mazgų.
  7. Atsarginės kopijos (Backup):

    • Reguliariai kurti etcd duomenų atsargines kopijas.
    • Naudoti įrankius kaip Velero, kurie leidžia kopijuoti ir atkurti klasterio būseną ir Persistent Volumes.

Pavyzdinė architektūra:

graph LR
    subgraph Vartotojai
        A[Vartotojas] --> B(Programos srauto balansatorius)
    end

    subgraph Kubernetes klasteris
        subgraph Meistrų mazgai
            C1(Meistrų mazgas 1)
            C2(Meistrų mazgas 2)
            C3(Meistrų mazgas 3)
        end

        subgraph `etcd` klasteris
            D1(etcd 1)
            D2(etcd 2)
            D3(etcd 3)
        end

        subgraph Darbo mazgai
            E1(Darbo mazgas 1)
            E2(Darbo mazgas 2)
            E3(Darbo mazgas 3)
        end

        subgraph Saugykla
            F(Paskirstyta saugykla)
        end

        subgraph Tinklas
            G(CNI tinklas)
        end

        B --> Bal(API serverio balansatorius)
        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: Pod'ų paleidimas
        G --> E2: Pod'ų paleidimas
        G --> E3: Pod'ų paleidimas

        E1 --> B: Programų srautas
        E2 --> B: Programų srautas
        E3 --> B: Programų srautas
    end

Naudojami automatizavimo įrankiai, tokie kaip kubeadm, Kubespray arba debesų valdymo paslaugos (EKS, GKE, AKS), kurie palengvina atsparios infrastruktūros kūrimą.