30 jun 2020 Wat is Kubernetes? Nieuws Kubernetes is op dit moment de de-facto standaard voor containerorkestratie. Met orkestratie kan van een aantal individuele servers, ongeacht merk/type, een cluster worden gebouwd dat containers kan laten draaien. Hierdoor zet je relatief eenvoudig een uitvalbestendige applicatie-omgeving in elkaar. Door de mogelijkheid om binnen het cluster onafhankelijke omgevingen te draaien, is Kubernetes op grote schaal te gebruiken. Waar komt Kubernetes vandaan? Google maakt voor haar productie-omgeving gebruik van een zelf ontwikkeld softwaresysteem met de naam Borg. Borg is ontstaan uit de behoefte om het deployen, opschalen en beheren van gecontaineriseerde applicaties te vereenvoudigen. Het kan worden gezien als een orkestratie-platform dat op basis van spelregels zorgt dat containers worden gestart, gestopt of verplaatst. Borg heeft een aantal Google engineers geïnspireerd om medio juni 2014 te beginnen met de bouw van Kubernetes (“kapitein” vrij vertaald uit het Grieks). Juli 2015 is het project door Google, onder Apache Licence 2.0 open source gemaakt door samen met de Linux Foundation de Cloud Native Computing Foundation op te richten. Kubernetes is geschreven in de programmeertaal Go. Kubernetes kan worden bediend door middel van een uitgebreide API en de CLI (kubectl). Er is ook een webinterface beschikbaar, waarmee op basis van een GUI kan worden gewerkt. Door de API kan Kubernetes naadloos worden geïntegreerd met een CI/CD pipeline om deployments volledig geautomatiseerd te laten plaatsvinden. Kubernetes werkt met containers op basis van een aantal bouwblokken, objecten genaamd. Kubernetes: hoe spreek je dat precies uit? Er is op internet altijd veel moois te vinden. Zo ook wanneer je zoekt hoe je Kubernetes nu precies uitspreekt. Is het nu “Koe-bur-net-tiez”, “Kuu-ber-nee-tes” of toch “Kjoe-burr-nie-tes”? Volgens Emma Saying is het zoiets als “koo-ber-ne-tace”, maar diverse Youtube-reacties zeggen resoluut dat dat niet klopt. Wat denk jij? En oh ja…. dan is er ook nog K8s. De 8 staat hierbij voor het aantal letters tussen de K en de s. Volgens howtopronounce.cc spreek je dit dan weer uit als “K-eight-s”. We wensen je veel plezier toe met oefenen! Pods De Pod is de basiseenheid waarbinnen een applicatie draait. Een pod bestaat uit 1 of meerdere containers. Dit kunnen Docker containers zijn, maar ook andere container-implementaties worden ondersteund zoals CRI-O en containerd. Uitgangspunt is dat iedere pod een enkele instantie draait van een applicatie. Als je de applicatie wilt opschalen, dan verhoog je het aantal pods. Je schaalt niet op door meerdere applicaties binnen dezelfde pod te starten. Services Bij het starten van een pod wordt dynamisch een IP-adres toegewezen op het interne pod netwerk. Hierdoor kan het IP-adres van een pod na een herstart weer veranderd zijn. Met een service blijven de pods bereikbaar op basis van de service-naam. Kubernetes zorgt ervoor dat wordt bijgehouden welke pod op welk adres draait. Pods en services zijn veelgebruikte bouwblokken voor micro-services. Volumes Een uitgangspunt van Kubernetes is dat een container binnen een pod “state-less” is en altijd gestopt en opnieuw gestart moet kunnen worden, om te zorgen dat de pod (en daarmee de applicatie de en/of service) beschikbaar blijft. Wanneer een container gestopt wordt dan gaat alle data in die container verloren, want een nieuwe container start met een schone lei. Dit is niet altijd wenselijk. Kubernetes kan daarom werken met persistent volumes. Hierbij staat de opslagruimte buiten de pod. Op die manier kunnen containers in de pod gebruik maken van opslag die behouden blijft als de container (of de pod) stopt. Er zijn voor verschillende toepassing uiteenlopende soorten volumes, denk aan nfs, cephfs, glusterfs, iscsi, local maar ook binnen cloud-providers zoals bijvoorbeeld Azure (azureDisk), AWS (awsElasticBlockStore) en Google (gcePersistentDisk). Namespaces Zoals gezegd is Kubernetes afkomstig uit de koker van Google. Het is geboren om op grote (beter: enorme) schaal te gebruiken. Kubernetes biedt daarom door middel van namespaces de mogelijkheid om binnen het cluster onafhankelijke omgevingen te draaien. Hierdoor kunnen binnen namespace A pods of services draaien met dezelfde naam als in namespace B zonder dat ze last hebben van elkaar. Het gebruik van namespaces brengt de nodige complexiteit en uitdagingen met zich mee, maar bij grote(re) implementaties ook voordelen. Zo kun je voor monitoring een aparte monitoring namespace maken, waarvoor een apart/onafhankelijk team verantwoordelijk is. Je kan ook ieder team binnen een bedrijf een eigen namespace geven, waardoor ieder team onafhankelijk van elkaar met Kubernetes kan werken maar waarbij je wel grip houdt op de resources die een namespace gebruikt. Populariteit Op dit moment is Kubernetes de de-facto standaard wanneer het aankomt op container-orkestratie. Diverse derde partijen bieden Kubernetes als ondersteunende dienst of platform aan, waaronder Red Hat Openshift, Google Kubernetes Engine (GKE), Azure Container Service (AKS) en Amazon Elastic Container Service (EKS). Wil je meer weten over Kubernetes? Kijk dan eens op https://kubernetes.io/. Kubernetes training Wil jij de basisprincipes kennen die nodig zijn om Kubernetes te begrijpen én snel aan de slag te gaan? Schrijf je dan in voor de training Kubernetes Fundamentals (English course). Gerelateerde artikelen Perplexity.ai: nieuwe standaard in zoeken Discrimineren met beleid Docker: containerbegrip in de IT-wereld