Middle+
Jak vytvořit odolný cluster Kubernetes?
sobes.tech AI
Odpověď od AI
Pro vytvoření odolného Kubernetes clusteru je nutné zajistit redundanci klíčových komponent a dat.
Hlavní kroky:
-
Master uzly:
- Nasadit několik master uzlů (minimálně tři) pro komponentu
kube-apiserver, které běží za load balancerem. To zajišťuje dostupnost API serveru i při selhání jednoho z master uzlů. - Každý master uzel musí mít přístup ke sdílenému úložišti stavu clusteru —
etcd.
- Nasadit několik master uzlů (minimálně tři) pro komponentu
-
etcd:
- Nasadit cluster etcd složený z několika uzlů (doporučuje se lichý počet, minimálně tři), rozložených do různých dostupnostních zón nebo na fyzických serverech. To zaručuje bezpečnost dat o stavu clusteru.
-
Load Balancer:
- Použít L4/L7 load balancer pro rozdělení provozu mezi master uzly (
kube-apiserver). - Použít jiný load balancer pro příchozí provoz k aplikacím v clusteru (například Ingress Controller s podporou odolnosti vůči selhání).
- Použít L4/L7 load balancer pro rozdělení provozu mezi master uzly (
-
Pracovní uzly (Worker Nodes):
- Nasadit dostatečný počet pracovních uzlů pro spuštění Podů.
- Rozložit pracovní uzly do různých dostupnostních zón nebo na fyzické servery, aby byla zajištěna odolnost vůči selhání na úrovni infrastruktury.
- Nakonfigurovat Pod Disruption Budgets (PDBs) pro určení minimálního počtu dostupných Podů během dobrovolných přerušení (například při aktualizaci uzlů).
-
Úložiště:
- Používat distribuované úložiště nebo cloudové úložiště s vlastní odolností vůči selhání pro Persistent Volumes.
- Příklady: Rook (Ceph), GlusterFS, cloudoví poskytovatelé (AWS EBS, GCP Persistent Disk, Azure Managed Disks) s replikací.
-
Síť:
- Používat spolehlivé síťové řešení CNI s podporou odolnosti (například Calico, Cilium s replikovanými komponentami).
- Zajistit propojení mezi master uzly, uzly etcd a pracovními uzly.
-
Zálohování:
- Pravidelně vytvářet zálohy dat etcd.
- Používat nástroje jako Velero pro zálohování a obnovu stavu clusteru a Persistent Volumes.
Příklad architektury:
graph LR
subgraph Uživatelé
A[Uživatel] --> B(Load balancer pro provoz aplikací)
end
subgraph Kubernetes Cluster
subgraph Master uzly
C1(Master uzel 1)
C2(Master uzel 2)
C3(Master uzel 3)
end
subgraph Cluster etcd
D1(etcd 1)
D2(etcd 2)
D3(etcd 3)
end
subgraph Pracovní uzly
E1(Pracovní uzel 1)
E2(Pracovní uzel 2)
E3(Pracovní uzel 3)
end
subgraph Úložiště
F(Distribuované úložiště)
end
subgraph Síť
G(CNI síť)
end
B --> Bal(Load balancer API-serveru)
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: Spuštění Podů
G --> E2: Spuštění Podů
G --> E3: Spuštění Podů
E1 --> B: Provoz aplikací
E2 --> B: Provoz aplikací
E3 --> B: Provoz aplikací
end
Při nasazení se používají nástroje automatizace jako kubeadm, Kubespray nebo managed Kubernetes služby od cloudových poskytovatelů (EKS, GKE, AKS), které usnadňují tvorbu odolné infrastruktury.