Hulpartikel overzicht

Hulpartikel

Wat is Kubernetes?

Kubernetes, ook bekend als K8s, is een open-source systeem voor het automatiseren van deployments, schalen en beheer van gecontainerizeerde applicaties.

Een Kubernetes-cluster bevat een aantal worker machines, genaamd 'worker nodes' (meestal spreekt men simpelweg over nodes). Dit zijn virtuele machines die gecontainerizeerde applicaties uitvoeren. Ieder Kubernetes-cluster bevat minstens één worker node.

Worker nodes hosten Pods, de kleinste eenheden binnen een Kubernetes-cluster. Een pod is een groep van één of meer containers, die resources zoals opslag en netwerk delen. De status van Pods worden op hun beurt beheert via Kubernetes Deployments. Zie ook onze 'hello node'-tutorial om een snel begrip te krijgen van het werken met Deployments en Pods.

In dit artikel laten we zien uit welke onderdelen een Kubernetes-cluster bestaat.

Kubernetes components


Kubernetes control plane

 

De control plane van een Kubernetes-cluster bevat onderdelen die gebruikt worden om beslissingen te nemen over het cluster (bijv het schedulen van taken). Daarnaast zorgt de control plane voor het detecteren van en reageren op cluster events (zoals het opstarten van een nieuwe pod).

De onderdelen van een control plane kunnen vanaf willekeurige servers in een Kubernetes-cluster uitgevoerd worden, maar voor eenvoud plaatst men de verschillende onderdelen doorgaans op één server.

 

Kube-apiserver

De API server stelt de Kubernetes API beschikbaar en is de 'frontend' van een Kubernetes control plane. De kube-apiserver schaalt horizontaal. Dit betekent dat je meerdere instances van de kube-apiserver kunt uitvoeren en verkeer gebalanceerd wordt tussen die instances.

 

Etcd

Etcd is een key value store. Deze wordt door Kubernetes doorgaans gebruikt om kleine gegevens uit te lezen die zeer snel beschikbaar moeten zijn, zoals de status van een node. Wij gebruiken voor ons Kubernetes-platform Etcd bijvoorbeeld om een lock op een node te plaatsen indien nodig.

 

Kube-scheduler

De Kube-scheduler controleert of er nieuw aangemaakte pods zijn die niet toegewezen aan een node en wijst dan een node toe om ze vanaf uit te voeren. Hierbij wordt o.a. gelet op resource vereisten, hardware/software/policy beperkingen, etc.

 

Kube-controller-manager

Het onderdeel dat controlerende processen uitvoert. Ieder controller-proces is een losstaand proces, maar voor vereenvoudiging worden alle onderdelen samen in een enkel uitvoerbaar programma verwerkt en uitgevoerd. De Kube-controller-manager bestaat o.a. uit:

  • Node controller: Merkt en reageert op het neergaan van nodes.
     
  • Job controller: Controleert op eenmalig uit te voeren taken en creeërt een of meer pods om die taken uit te voeren.
     
  • Endpoints controller: Voegt services en pods samen.
     
  • Service Account & Token controllers: Maakt standaard accounts en API access tokens voor nieuwe namespaces.

 

Cloud-controller-manager

Een control plane onderdeel dat cloud specifieke control logica embed. Simpel gezegd zorgt de cloud control manager ervoor dat je Kubernetes-cluster met de API van je cloud provider kan verbinden, en onderdelen die met dat cloud platform communiceren splitst van onderdelen die alleen met je cluster communiceren. Een on-premise Kubernetes-cluster maakt geen gebruik van een Cloud-controller-manager; het gaat dus enkel om de communicatie met de API van je cloud provider.

Er kan meer dan één Cloud-controller-manager tegelijk uitgevoerd worden om performance en foutgevoeligheid te verbeteren.

Een aantal Kubernetes-controllers kan cloud provider dependencies bevatten waar de Cloud-controller-manager voor van pas komt:

  • De node controller: Om bij de cloud provider vast te stellen wanneer een node niet langer reageert of die verwijderd is.
     
  • Route controller: Voor het opzetten van network routes in de onderliggende cloud infrastructuur.
     
  • Service controller: Voor het maken, updaten en verwijderen van load balancers bij de cloud provider.

Node Components

 

Node onderdelen worden op Nodes uitgevoerd en verzorgen het onderhoud van pods en de Kubernetes runtime environment.

 

Kubelet

Een 'agent' die op iedere node in het Kubernetes-cluster wordt uitgevoerd. Kubelet zorgt ervoor dat containers in een 'pod' uitgevoerd worden. Kubelet neemt een set van PodSpecs en zorgt ervoor dat de containers die in de PodSpecs worden beschreven correct uitgevoerd worden. Kubelet beheert geen containers die niet door Kubernetes zijn aangemaakt.

 

Kube-proxy

Kube-proxy is een network-proxy die eveneens op iedere node in het cluster actief is en netwerkregels op nodes beheert. Deze netwerk regels zorgen ervoor dat netwerk communicatie naar je pods mogelijk is vanaf netwerken zowel binnen als buiten je Kubernetes-cluster.

 

Container runtime

De container runtime zorgt simpelweg voor het uitvoeren van containers. Kubernetes ondersteunt container runtimes zoals Containerd, CRI-O, en andere implementaties van de Kubernetes CRI (Container Runtime Interface).

Heb je ook een goed idee?

Stuur jouw idee in! Met genoeg stemmen komt jouw idee op onze wishlist!

Heeft dit artikel je geholpen?

Maak een account aan of log in om een beoordeling achter te laten.

Reacties

Maak een account aan of log in om een reactie te plaatsen.

Kom je er niet uit?

Ontvang persoonlijke hulp van onze supporters

Neem contact op