10 tips voor Kubernetes

Op deze pagina vind je 10 tips om met Kubernetes aan de slag te gaan. 

latest-tag

Wanneer je een container deployed, voorkom dan dat je bijvoorbeeld php:latest deployed maar gebruik version pinning, als php:8.1. Als je container dat herstart heb je dezelfde versie en beter betrouwbare resultaten. PHP houdt hier goed bij welke tags er beschikbaar zijn.

Resource verbruik

Je kunt makkelijk resources toekennen aan een container, zo kun je beter in de breedte schalen en bottlenecks in je applicatie vinden tijdens het ontwikkelen. In ons demo cluster krijgt iedere pod standaard maximaal 256Mb RAM. Klik hier om te kijken hoe je dit doet.

Cluster en Namespace

Check altijd even waar je het deployed! Voor clusters gebruik je kubectl config get-contexts om het active cluster te zien. Hier zou mogelijk ook al de default namespace in te zien kunnen zijn, deze kan ook in het yaml-bestand staan of kun je het toekennen met kubectl -n <namespace> ....

Applicatie ontwerp

Kubernetes is een heel mooi systeem, maar niet voor alle applicaties. Dus probeer geen applicatie met een monolithic app architecture in Kubernetes te forceren, want dat levert alleen maar hoofdpijn op. Alleen applicaties die geschikt zijn om met microservices te werken schalen goed.

Health checks

Containters kunnen worden voorzien van health checks. Wanneer  je je eigen container maakt zou ik daar zeker naar kijken! Zo kan je makkelijk zien of je applicatie gezond is, en scheelt het erg veel tijd met debuggen.

Stateful vs Deployment

Een deployment is van nature stateless, wat betekend dat pods hierin uitwisselbaar zijn. StatefulSet is ontworpen voor een applicatie waarbij permanente opslag van data en koppeling tussen pod en data belangerijk zijn.

Alles naar Kubernetes?

Aansluitend op stateful applicaties; je hoeft niet in een keer alles in Kubernetes te zetten. Een combinatie van een dedicated database server, cdn en Kubernetes kunnen de applicatie in Kubernetes misschien wel stateless maken. Stateless applicaties maken het onderhoud veel makkelijker.

Developers

...developers, developers zei iemand ooit. De mensen die de applicatie maken moeten mee in het proces om van één grote applicatie naar micro services te gaan. Als de applicatie niet goed horizontaal schaalbaar is, dan heeft het geen zin om naar Kubernetes over te stappen.

Deployment strategie

Zowel de migratie van server naar Kubernetes, als upgrades hebben een deployment strategie nodig. Voorbeelden hiervan zijn rolling deployment, blue-green deployment of canary deployment

Default editor kubectl

Gebruik je graag kubectl edit ... om (kleine) wijzigingen aan te brengen aan bestaande resources? Dan kun je met de environment variabele KUBE_EDITOR je favoriete editor voor deze taak aanwijzen. Bijvoorbeeld: export KUBE_EDITOR=nano