Kubernetes titkos recept: cluster ízlés szerint elkészítve
Ahogy korábban már olvashattál róla, a Kubernetes telepítésének első lépése a megfelelő architektúra kiválasztása. A céljainktól, a környezet méretétől és a rendelkezésre állásra (HA) vonatkozó elvárásainktól függően több fürt-kialakítási lehetőség is elérhető.
Emellett lehetőség van arra is, hogy a Kubernetes összes fő komponensét egyetlen futtatható programként fordítsuk le saját gépünkön, ha testre szabott vagy fejlesztői környezetet szeretnénk kialakítani. Vannak, akiknek ez a hobbija, mert szeretné minden percét élvezni a programkód fordításának.
A négy fő Kubernetes fürt konfiguráció
A Kubernetes telepítésének négy gyakori módja létezik, különböző célokra és fejlettségi szintekre szabva. Ezeket már részben érintettük, most összefoglalásképp megmutatom egyben:
1. Egyszerű egy node-os telepítés
Ebben az esetben minden komponens (pl. API szerver, scheduler, controller-manager, kubelet, stb.) egyetlen gépen fut. Ez ideális választás:
- oktatási célra
- fejlesztői környezetekhez
- kísérletezéshez
- otthoni projektekhez
Ugyanakkor nem alkalmas élő (live, production) környezetre, mivel nem nyújt magas rendelkezésre állást.
2. Egy vezérlőcsomópont (head node), több munkavégző (worker)
Ebben a konfigurációban egyetlen vezérlőcsomópont vezérli a rendszer működését, és több munkavégző kapszula-futtató gép csatlakozik hozzá. A vezérlőcsomóponton jellemzően az alábbi elemek futnak:
- API szerver
- scheduler (ütemező)
- controller-manager
- stb. (etcd egybinárisos változatban)
Ez már egy skálázhatóbb modell, de továbbra is sérülékeny lehet, ha a head node elérhetetlenné válik.
3. Több vezérlőcsomópont, HA nélkül vagy részleges HA-val
Itt már több vezérlőcsomópont fut, ami javítja a rendelkezésre állást. A scheduler és a controller-manager vezetőt választanak maguk közül (leader election mechanizmus), és az API szerverek egy terheléselosztó mögött érhetők el. Az etcd még mindig lehet egycsomópontos.
Ez már alkalmas kisebb termelési környezetekre, de a teljes HA (High Availability) eléréséhez az etcd szintjén is replikációra van szükség.
4. Teljesen HA: HA vezérlőcsomópontok és HA etcd
A legmegbízhatóbb és legkomplexebb megoldás, amely:
- több vezérlőcsomópontot tartalmaz
- több etcd példányból álló fürtöt használ
- terheléselosztót alkalmaz az API szerverek előtt
Ebben a felállásban az etcd nem a vezérlőcsomópontokon fut, hanem külön gépeken, ezzel csökkentve az egy ponton történő hibák kockázatát. Nagyvállalati és kritikus rendszerek esetén ez az ajánlott megközelítés.
Fürtök közötti együttműködés: Kubernetes Federation
A Kubernetes Federation lehetőséget nyújt arra, hogy több teljes Kubernetes fürt közös vezérlő panel (control plane) alatt működjön. Ez lehetővé teszi az erőforrások migrálását az egyik klaszterből a másikba akár manuálisan, akár hibakezelés céljából. Bár az első verziónak voltak korlátai, a Federation v2 fejlesztései javítottak a stabilitáson és rugalmasságon. A Federation ls annak felhasználási esetei egy külön cikket is megérdemelne.

Kubernetes fordítása forráskódból
A Kubernetes számos binárisa (pl. kubelet
, kubeadm
, kubectl
) elérhető előre lefordított formában a GitHub-on.
Azonban haladó felhasználók és fejlesztők számára hasznos lehet a forráskódból történő saját fordítás.
Szükséges eszközök
- Telepített Golang környezet
- Git
- Megfelelő rendszerkövetelmények és jogosultságok
Lépések
- A Kubernetes forráskód klónozása:
- Fordítás futtatása:
make
- Az új binárisok az
_output/bin
mappában találhatók.
Figyelem: egyes rendszereken további csomagokra lehet szükség a make
sikeres lefutásához. A hibaüzenetek alapján ellenőrizni és pótolni kell a hiányzó függőségeket.
Összegzés
A Kubernetes telepítési lehetőségei a tanulási céloktól a magas rendelkezésre állást biztosító éles környezetekig terjednek. A fürt struktúrájának megválasztása előtt mindig tisztázni kell a célokat és az elvárt megbízhatóságot. Aki pedig mélyebben szeretné megérteni a Kubernetes működését, vagy testre szabott binárisokat szeretne létrehozni, annak érdemes a forráskódból történő fordítással is megismerkednie.
Te fordítottál már forráskódból alkalmazásokat, csak azért, hogy mélyebben megértsd annak működését?