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:
-
Meistrų mazgai:
- Įdiegti kelis meistrų mazgus (
kube-apiserverkomponentui), 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.
- Įdiegti kelis meistrų mazgus (
-
etcd:
- Įdiegti kelių mazgų
etcdklasterį (geriausia, jei jų yra ne mažiau trijų), išsidėsčiusį skirtingose zonose ar fiziniuose serveriuose. Tai garantuoja duomenų saugumą.
- Įdiegti kelių mazgų
-
Krovinių paskirstymo įrenginys (Load Balancer):
- Naudoti L4/L7 krovinių paskirstymo įrenginį, kuris paskirsto srautą tarp
kube-apiservermazgų. - Naudoti kitą paskirstymo įrenginį, skirtą įeinančiam srautui į klasterio programas (pvz., Ingress Controller, kuris palaiko atsparumą).
- Naudoti L4/L7 krovinių paskirstymo įrenginį, kuris paskirsto srautą tarp
-
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).
-
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.
-
Tinklas (Networking):
- Naudoti patikimą CNI tinklo sprendimą (pvz., Calico, Cilium su replikacijomis).
- Užtikrinti ryšį tarp meistrų mazgų,
etcdmazgų ir darbo mazgų.
-
Atsarginės kopijos (Backup):
- Reguliariai kurti
etcdduomenų atsargines kopijas. - Naudoti įrankius kaip Velero, kurie leidžia kopijuoti ir atkurti klasterio būseną ir Persistent Volumes.
- Reguliariai kurti
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ą.