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:
-
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.
- Nasadiť niekoľko master uzlov (minimálne tri) pre komponent
-
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.
-
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).
- Použiť L4/L7 load balancer na rozdelenie prevádzky medzi master uzly (
-
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).
-
Ú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.
-
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.
-
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.