Vorige week vrijdag doken we tijdens de deepdive in Kubernetes. Wat is Kubernetes nou eigenlijk en wat kun je ermee? Hieronder een kort verslagje met de verschillende vragen die we in deze deepdive probeerden te beantwoorden.
We begonnen met het bekijken van een duidelijk filmpje van 15 minuten. Hierin werd heel goed uitgelegd wat Kubernetes in de basis is.
Er zijn ook versies van 1 uur en 4 uur en natuurlijk zijn er diverse cursussen over Kubernetes te volgen. Voor een 1e gevoel is het korte filmpje echt wel een aanrader en lees onderstaande uitleg.
Kubernetes in een notendop
Kubernetes is een Container orchestration tool. Hiermee manage je containers, in verschillende omgevingen. Dit kunnen Docker containers zijn, maar ook andere type containers.
Daarbij zijn de hoofddoelen van Kubernetes:
- High availability
- Scalability
- Disaster recovery
Een Kubernetes cluster bestaat uit één master en één of meerdere worker nodes. Op de master draait o.a. een API server, een controller manager en een scheduler.
Op de worker nodes draaien de containers binnen zogenaamde pod’s.
De scheduler op de master zorgt voor disaster recovery alsook spreiding van de pod’s over de workers.
De master heeft ook de ETCD, oftewel de key store, waar alle credentials opgeslagen worden.
Naast het feit dat worker nodes en pod’s parallel uitgevoerd kunnen worden voor een betere performance en redundancy, kan ook de master parallel uitgevoerd worden. Mocht er een master down gaan, kan een andere master het werk overnemen.
In die pod’s (containers) draaien dus je applicaties. Elke pod krijgt een eigen IP.
Verder heb je services, dat zijn namen om pod’s te bereiken. Services linken aan een IP adres, maar loadbalancen ook over de verschillende pod’s.
Een router routeert het verkeer voor een cluster naar de verschillende services. Indien de services meervoudig uitgevoerd zijn, loadbalanced de router het verkeer ook over de verschillende services. Onderstaand een schema om dit nog iets duidelijker te maken.
Wat heb je nodig om Kubernetes te draaien?
Voor het draaien van Kubernetes heb je hardware nodig, maar ook vaardigheden.
Hardware: Per node (master en elke worker)
- Compatible Linux host
- Min 2 CPU
- Min 2 GB mem
- Een eigen uniek MAC adres, Host name en product_UUID (dus netwerkkaart)
- SWAP MOET uitgeschakeld zijn
Desgewenst kun je het ook lokaal draaien, o.a. middels minikube
- Kennis van Linux
- Kennis van YAML
- Kennis van Docker en containertechnologie
- Kennis van de Kubernetes architectuur
- Voldoende kennis van de juiste technische concepten:
– Workload, verdeling, security, storage, networking, configuratie en policies.
Wat kost Kubernetes?
Kubernetes an sich is een open source platform, welke gebruikt wordt in diverse applicaties. Om de kosten te kunnen bepalen, gaat het dus om de applicaties en de hardware waar die op draait.
Het kan op eigen hardware draaien of in de cloud. Bij het draaien op eigen hardware kost het natuurlijk een server (rack), die groot genoeg moet zijn om alle applicaties op te draaien. In de cloud vindt de berekening van de kosten doorgaans plaats door de uptime die gewenst is én het aantal GB geheugen die tijdens die uptime gebruikt wordt. Verder spelen nog een paar factoren mee zoals back-ups en support. Hierdoor kan de prijs variëren van 7 cent per gebruikt uur tot tonnen per maand bij de grotere implementaties.
OpenShift is 1 van de mogelijke implementaties van Kubernetes. Hier een uitleg over de kosten bij het gebruik van OpenShift. Alhoewel dat wel zeer afhankelijk is van wat je precies wilt. Voor een juiste kostenopgave moet je echt een offerte aanvragen.
Draai je Kubernetes lokaal, middels bijvoorbeeld minikube, dan heb je aanvankelijk dus geen kosten. Echter, je bent dan ook zeer beperkt door bijv. de hoeveelheid geheugen van het systeem waar je de minikube op draait.
Alles bij elkaar was het weer een leuke en leerzame deepdive sessie.
Aanstaande maandag 20 juni om 17.00 uur duiken we in Robot Framework. Duik je met ons mee?
Benieuwd naar eerdere deepdives? Kijk dan hier.