Levný ale výkonný Kubernetes Cluster
Poprvé jsem s k8s experimentoval již v roce 2016, tehdy jsem ale nevyřešil neustálé problémy s ETCD. Cluster se vždy do měsíce rozpadl.
Když jsem se na přelomu roku 2017/2018 rozhodoval kam dál posunout svoje zkušenosti s Dockerizováním aplikací, Kubernetes (k8s) byla jasná volba.
Stál jsem ale před rozhodnutím, jestli jít cestou managed clusteru na AWS EKS (Elastic Container Service for Kubernetes) - tehdy ještě BETA, Microsoft AKS (Azure Container Service) nebo Google GKE.
V té době jsem počítal s následující konfigurací hardware:
- celkem 3 servery
- 2xCPU
- 8GB ram
- 80GB SSD Storage + block storage
Podrobnější zkoumání tehdy ale skončilo na vysoké ceně za pronajatý hardware.
Pro ukázku tu mám aktuální kalkulaci na Google Compute Engine: 3servery * 63$ = 189$ * 22.8,-CZK = 4309,-CZK.
Tehdy jsem se na doporučení kamaráda Jakuba Dorňáka dozvěděl o Hetzner Cloud a jejich bezkonkurenční cenou za pronájem serveru.
3x9€ = 27€ * 25.6,-CZK = 691,- CZK a to je panečku jiné kafe.
Dnes běžím ve vyšší konfiguraci 3xCX41 + Load Balancer CX11 + Floating IP + Block Storages a jsem na ceně 56€ = 1433,- CZK / měsíc. Na Google Compute Engine bych se při obdobné konfiguraci dostal na 8550,- CZK / měsíc.
A co se týká výkonu serveru a aplikace. Provozuji zde 2x MariaDB v HA konfiguraci, které beží na všech 3 serverech. Pokud jeden server zahodím a nahodím nový (například při upgrade na novější verzi Ubuntu), databáze se tam během pár minut zreplikuje a instance MariaDB se přidá do clusteru. K databázi přistupuje PHP aplikace postavená na Symfony, která dále komunikuje s RabbitMQ a odtud se pak řeší fronta rozesílání newsletteru nebo generování náhledů nových fotografií a přidávání vodoznaku v custom NodeJS aplikaci. Dále zde běží Redis, ElasticSearch, Ghost Blogy a v neposlední řadě Gitlab, přes který realizuji CI/CD.
Po úspěšném přechodu na Kubernetes 600ms->257ms. 1 denní peak 2400ms byla chyba v konfiguraci Load Balanceru.
V současné době se pohybuji na průměru 183ms a nejlépe 107 ms. Důležité je ale zmínit, že 2 CX41 běží v lokaci Falkenstein spolu s Load Balancerem a 1 CX41 běží v Norimbergu, což může mít i nějaký vliv na výkon aplikace. Mám tak ale pocit většího bezpečí HA databáze.