Blijf op de hoogte van alle
nieuwigheden bij Core ICT
Een duidelijk overzicht over jouw containers? Ontdek alles over Kubernetes
Als bedrijf krijg je te maken met een overweldigende hoeveelheid aan data en applicaties. Veel van deze applicaties worden tegenwoordig opgeleverd in container vorm of worden intern ontwikkeld via een CI/CD pipeline met als output: containers. Deze containers wil je als bedrijf uiteraard in de lucht kunnen houden zonder downtime. Er is dus een grote nood aan een platform dat het beheer van deze containers verzorgt en vergemakkelijkt. En dit is waar Kubernetes op het toneel verschijnt.
Lees onze blogpost en ontdek wat Kubernetes precies is, hoe die containertechnologie alweer werkt, wat het verschil is tussen containers en VM’s en waarom je dan voor Kubernetes zou kiezen.
Een korte review over containers en microservices
Voordat we dieper in gaan op Kubernetes, lijkt het ons zinvol om kort stil te staan bij termen als ‘containers’ en ‘microservices’. Volgens ons info die nodig is om het grotere Kubernetes-geheel te vatten.
Microservices hebben te maken met het ontwerp van de software. Het gaat om de manier waarop functies in software geprogrammeerd worden. Grote blokken software worden hier in vele kleine deeltjes verdeeld. Elk deeltje is verantwoordelijk voor een functie van de software. De software wordt dus opgebouwd aan de hand van mini-applicaties die onderling met elkaar communiceren via API’s. Ze kunnen snel geïmplementeerd en aangepast worden, ze kunnen makkelijk verplaatst worden tussen verschillende omgevingen en zijn ook makkelijk schaalbaar. Dit alles zonder dat de eindgebruiker hier last van ondervindt of dit überhaupt nog maar opmerkt. Een applicatie kan hierdoor bijvoorbeeld een bepaalde functie updaten, zonder dat dit een effect heeft op de overige functies van de app en de end-user nog maar iets opmerkt.
Applicaties worden vandaag dus vaak gebouwd op basis van deze microservices. Hierdoor winnen containers ook aan belang. Het begrip container verwijst namelijk naar de manier waarop microservices worden ‘ingepakt’. Het is een infrastructuur voor het inpakken, het implementeren en het verplaatsen van applicaties. Alles wat de applicatie nodig heeft om te kunnen draaien (denk aan: de code, bijhorende configuratiebestanden, bibliotheken, etc.) wordt, samen met de software zelf, in de container opgenomen. Dit heeft als voordeel dat er geen wijzigingen meer moeten worden aangebracht aan de software om deze aan te passen aan de omgeving waarin deze moet draaien. Het gebruik van containers zorgt voor veel flexibiliteit, draagbaarheid en schaalbaarheid.
Waarom containers en niet gewoon VM’s gebruiken?
Wanneer je als bedrijf grote en flexibele workloads moet verwerken, schieten VM’s tekort. Deze zijn log omdat ze naast de applicatie ook een volledig besturingssysteem bevatten. De VM verbruikt dus meer opslagruimte, CPU-kracht en geheugen van de fysieke server. Dit is bij een container niet langer het geval. Containers gebruiken hetzelfde besturingssysteem als de host. Je moet dus niet steeds het hele besturingssysteem in de nieuwe VM onderbrengen en deze apart beheren. Een container bevat enkel de onderdelen die nodig zijn om een applicatie vlot te laten draaien.Containers zijn hierdoor dus veel meer mobiel, flexibel én schaalbaar.
Wat is Kubernetes dan precies?
Kubernetes is een open-source oplossing dat de uitrol, de schaling en het beheer van containers automatiseert. Het systeem is ontwikkeld om grote groepen containers te beheren en te organiseren, zonder dat je het overzicht ervan verliest.
Gezien containertechnologie steeds vaker gebruikt wordt, is een oplossing als Kubernetes geen overbodige luxe (ondanks het niet te onderschatten technische karakter ervan). Het is een slimme oplossing die containers van de nodige resources voorziet en aan load-balancing doet. Wanneer het verkeer naar een bepaalde containter te hoog is, kan Kubernetes het verkeer automatisch verdelen en herleiden naar een andere container. De stabiliteit van de applicatie kan op deze manier bewaart blijven.
Daarnaast herstart Kubernetes vastgelopen applicaties op een andere node in de cluster (failover) zodat de applicaties soepel kunnen blijven draaien. Het kan ook heel makkelijk opschalen en downscalen afhankelijk van de noden van jouw applicaties. Je merkt zelf al dat al deze functionaliteiten ervoor zorgen dat resources efficiënt gebruikt worden. Dit heeft op zijn beurt natuurlijk ook financiële voordelen.
Kubernetes en zijn verschillende componenten
Kubernetes is een systeem dat workloads draait die omvat zitten in containers. Deze containers worden in pods geplaatst om ze vervolgens op worker nodes te laten draaien. De worker nodes worden aangestuurd via de master node. Geen idee wat dit allemaal betekent? We geven je wat extra uitleg:
- Master Node:
Deze bewaakt en beheert de cluster-infrastructuur (die bestaat uit verschillende worker nodes). Het beheert de containers dus niet apart. De master node controleert en beheert de verschillende worker nodes. Je stelt vooraf criteria op over wanneer en hoe containers moeten opstarten of stoppen. De master node start en stopt de extra containersvervolgens aan de hand van deze criteria.
- Worker Node:
Een worker node is een onderdeel van de Kubernetes cluster en host de pods. Het kan gaan om zowel een virtuele als een fysieke machine, afhankelijk van de cluster. De worker nodes worden gebruikt om de gecontaineriseerde applicaties te laten draaien.
- Cluster:
Een verzameling van nodes waar gecontaineriseerde applicaties op draaien en dat beheerd wordt door Kubernetes.
- Pod:
Een pod is de kleinste eenheid binnen het Kubernetes verhaal. Het bundelt containers die heel nauw samenwerken, afhankelijk zijn van elkaar en dezelfde opslag- en netwerkbronnen gebruiken. Pods zijn vluchtige onderdelen van Kubernetes. Ze kunnen gecreëerd maar ook vernietigd worden, afhankelijk van de noden van jouw cluster. Pods kunnen onderling met elkaar communiceren.
- Service:
Pods hebben een niet-permanent karakter en horen vluchtig te zijn. De functie ‘Service’ zorgt ervoor dat pods een permanent IP adres krijgen. Wanneer de Pod vastloopt, zal zijn IP-adres niet veranderen wanneer deze opnieuw wordt opgezet. Daarnaast kan een service ook voor loadbalancing tussen verschillende pods zorgen.
- Netwerk provider:
De netwerk provider zorgt ervoor dat het verkeer tussen de applicaties in de clusters – en van buiten de cluster- in goede banen wordt geleid. Calico en Flannel zijn de meest gebruikte container-netwerk interfaces voor containers en virtuele machines.
- Ingress:
‘Ingress’ is een Application Programming Interface-object dat regels bevat om het verkeer van externe gebruikers binnen de cluster te sturen.
- Ingress controller:
De ingress controller is verantwoordelijk om het inkomende verkeer te verdelen en te herleiden naar de desbetreffende microservice binnen de kubernetes cluster op basis van de voorgenoemde ingress regels. Dit kan HTTP of HTTPS verkeer zijn.
- Config map:
Dit is een Kubernetes object dat het mogelijk maakt om customisatie mee te geven met een Kubernetes Image. Hierdoor kan je bijvoorbeeld per klant eenzelfde applicatie uitrollen, met telkens een specifieke configuratie afgestemd om de noden van deze klant.
- Secret:
Dit is een beveiligd object binnen Kubernetes dat gevoelige data bevat. Denk aan: paswoorden, tokens, beveiligingssleutels. Er zijn verschillende types van ‘secrets’. Wanneer je een ‘secret’ opzet kan je aangeven om wat voor type het gaat. Secrets binnen Kubernetes zijn gelijkaardig aan de Configmaps binnen Kubernetes. Alleen zijn deze bedoeld voor gevoelige informatie.
- Volume:
Er zijn verschillende soorten volumes binnen Kubernetes: vluchtige, permanente, gedeelde en gereserveerde volumes.Een pod kan verschillende types tegelijkertijd gebruiken. Vluchtige volumes hebben een levensduur van een pod, maar permanente volumes bestaan langer dan de levensduur van pods. Wanneer een pod ophoudt te bestaan verwijdert Kubernetes de vluchtige volumes ervan, maar bewaart het de permanente volumes. Een volume is een map die toegankelijk is voor de containers in een pod.
- Deployment:
Wanneer je een applicatie uitrolt, maak je een deployment-bestand aan. In dit bestand staat hoeveel pods, services, … nodig zijn om een applicatie uit te rollen. Je kan vooraf eveneens het minimum en maximum aantal pods definiëren (alsook de hoeveelheid resources die gebruikt mogen worden), zodat de opschaling en de downscaling automatisch kan verlopen.
Waarom nu precies kiezen voor Kubernetes?
Containers zijn een goede manier om jouw applicaties te bundelen en in te draaien. Het is van belang dat er in een productie-omgeving geen downtime is. Wanneer een container crasht wil je uiteraard dat er automatisch een nieuwe wordt opgestart, toch?
- Automatisatie
Kubernetes is een systeem dat sterk inzet op automatisatie. Dit is ook één van de grootste voordelen ervan. Het menselijke aspect wordt uitgeschakeld en een slimme oplossing wordt opgezet. Wanneer een container vastloopt, start Kubernetes automatisch een nieuwe op en wanneer het verkeer te hoog wordt, herleid Kubernetes dit automatisch naar andere containers.
- Eén taal voor alles
Kubernetes maakt gebruik van ‘declarative configuration’. Dit betekent dat bij de opzet ervan éénzelfde taal wordt gebruikt en dat alle afzonderlijke specialisten eenzelfde programmeertaal hanteren. Containers en applicaties beheren wordt hierdoor makkelijker en vraagt minder tijd en kennis.
- Flexibiliteit, efficiëntie en schaalbaarheid
Het feit dat Kubernetes veel taken automatiseert, maakt dat deze oplossing flexibel, efficiënt en schaalbaar is. De oplossing zal automatisch bijschalen waar nodig, afhankelijk van het verkeer van en naar de containers. Deze automatisatie is eveneens een antwoord op de impact die problemen hebben op jouw systeem. Kubernetes gaat elke component afzonderlijk verifiëren en vervolgens automatisch corrigeren. Dit verkleint de impact, gezien een probleem snel wordt opgemerkt en wordt verholpen. Dit heeft dan weer een positief effect op de beschikbaarheid van uw systeem en het performance level.
- Draagbaarheid
Doordat containers over datgene beschikken wat ze nodig hebben om te kunnen draaien en gescheiden zijn van hun infrastructuur, worden ze erg draagbaar en is het dus makkelijk om de workloads te verplaatsen.
Naast de vele voordelen van deze oplossing zijn we ons ook bewust van de nadelen ervan. Als je niet over de juiste technische kennis beschikt, kan het heel snel een doolhof worden. Nutanix-Kubernetes-Engine (NKE) kan een enorm hulpmiddel zijn voor het beheer van de Kubernetes omgeving. Lees meer in onze blogpost.
Core ICT’s Kubernetes-in-a-box oplossing:
Aangezien de Nutanix-Kubernetes-Engine uiteraard niet zaligmakend is en het opzetten van de omgeving ingewikkeld in elkaar zit, bieden wij Kubernetes als oplossing aan: Kubernetes-in-a-box. Download onze onepager en ontdek alles over deze all-in-one Kubernetes oplossing!
Heb je nog vragen? Neem zeker contact op via onderstaand formulier. Wij klaren alle onduidelijkheden graag voor je uit en bekijken graag wat de mogelijkheden zijn!