Cover
Inizia ora gratuitamente 8__Lecture_Kubernetes.pdf
Summary
# Virtualisatie en cloudconcepten in datacenters
Dit onderwerp biedt een overzicht van datacenters en verkent de overstap naar virtuele omgevingen en cloudgebaseerde diensten, met een focus op automatisering en kostenefficiëntie [2](#page=2) [3](#page=3).
### 1.1 Van datacenter naar cloud diensten
Een traditioneel datacenter bestaat uit fysieke hardware die "on premise" staat, wat veel verantwoordelijkheden en zelfbeheer met zich meebrengt. Wanneer dit datacenter gevirtualiseerd wordt, spreken we van een private cloud. Een alternatief is de publieke cloud, waarbij de hardware wordt beheerd door een externe provider, wat resulteert in een abstractie van de onderliggende infrastructuur. De kernvraag is hoe we datacenterdiensten kunnen aanbieden met minder tijd en moeite, wat leidt tot keuzes tussen eigen datacenters, publieke cloudservices of een hybride aanpak [2](#page=2) [3](#page=3).
### 1.2 Technische en zakelijke overwegingen
De keuze tussen verschillende opties, zoals bare metal, virtuele machines of containers, en de mate van beheer (managed producten versus volledige controle), is zowel technisch als zakelijk gedreven. Belangrijke overwegingen zijn onder andere de behoefte aan een operationeel team of het uitbesteden aan een provider, het ontwerpen voor schaalbaarheid, en kostoptimalisatie [3](#page=3).
### 1.3 Integratie van ontwikkelingsfeatures en automatisering
Om datacenterdiensten efficiënter te maken, is de integratie van ontwikkelaarsfeatures cruciaal. Dit omvat CI/CD pipelines, geautomatiseerde testen, logging, Application Performance Monitoring (APM), en multi-omgevingsopstellingen zoals staging en productie. Gezien de beperkte middelen is automatisering de sleutel. Dit wordt bereikt door middel van Infrastructure as Code (IaC), auto-scaling (horizontaal of verticaal), en auto-restore mechanismen [4](#page=4).
### 1.4 Automatiseringstools
Er zijn diverse opties voor automatisering. Configuratie- en orkestratietools zoals Chef, Puppet en Ansible kunnen virtuele machines beheren en configureren. Echter, de creatie van de virtuele machines zelf en de initiële SSH-configuratie vallen hier vaak buiten. Terraform is een tool die wordt gebruikt voor Infrastructure as Code (IaC) [5](#page=5).
---
# Containertechnologie en orkestratie
Het beheren van containertechnologie en het automatiseren van de implementatie en schaalbaarheid van applicaties vormt de kern van containerorkestratie [10](#page=10).
## 2 Containertechnologie en orkestratie
Het effectief inzetten van containertechnologie vereist een duidelijke scheiding tussen lokale ontwikkelomgevingen en productieomgevingen, aangevuld met robuuste orkestratiehulpmiddelen.
### 2.1 Verschil tussen lokale ontwikkeling en productieomgevingen
Er is een significant verschil tussen het configureren en gebruiken van tools voor lokale ontwikkeling en testen, en het opzetten van systemen voor productie of staging [8](#page=8).
#### 2.1.1 Tools voor lokale ontwikkeling
Voor lokale ontwikkeling en testen worden vaak de volgende tools gebruikt:
* Docker en Docker-compose [8](#page=8).
* Vagrant [8](#page=8).
* Kind, k3s, Minikube [8](#page=8).
* Workstation Hypervisors [8](#page=8).
* Programming language suites/packages [8](#page=8).
#### 2.1.2 Uitdagingen bij productieomgevingen
In een productieomgeving wordt de focus verlegd naar het betrouwbaar draaien van containers op schaal. Dit kan op verschillende manieren gerealiseerd worden:
* **Direct op een server:** Door containers direct op een server te draaien met behulp van een containerdaemon (zoals Docker, Podman of containerd). Dit is een eenvoudige en goedkope aanpak, maar biedt geen standaardoplossingen voor schaling of redundantie en vereist handmatige port-expositie [7](#page=7).
* **Orchestratietools:** Hulpmiddelen zoals Kubernetes bieden een industriestandaard voor het orkestreren van containers. Ze zijn zeer flexibel, schaalbaar en uitbreidbaar, maar ook technisch complex en kunnen zowel on-premise als cloud-gebaseerd worden ingezet [7](#page=7).
* **Managed services:** Cloudplatforms bieden beheerde diensten die het beheer van containers vereenvoudigen, zoals AWS App Runner, GCP Cloud Run en Azure Container App. Ook private hostingbedrijven bieden oplossingen voor het draaien van containers in productie [7](#page=7).
### 2.2 De rol van orkestratiehulpmiddelen
Containerorkestratiehulpmiddelen zijn essentieel geworden voor het beheren van de complexiteit die ontstaat door de toename van containers, met name in de context van de trend van monolithische applicaties naar microservices [12](#page=12).
#### 2.2.1 Containerorkestratie
Een containerorkestrator, zoals Kubernetes (ook wel bekend als k8s), is een open-source tool die de implementatie en schaling van applicaties automatiseert door een ecosysteem van tools te bieden. Het functioneert als een laag bovenop containers [10](#page=10).
> **Tip:** Kubernetes kan gezien worden als een "laag bovenop containers" die helpt bij het beheren en automatiseren van containerized applicaties.
#### 2.2.2 Belangrijke features van orkestratie
Containerorkestratiehulpmiddelen bieden diverse cruciale functionaliteiten:
* **Hoge beschikbaarheid:** Door middel van health checking wordt ervoor gezorgd dat applicaties altijd beschikbaar zijn [12](#page=12).
* **Schaalbaarheid:** De mogelijkheid om de capaciteit van applicaties aan te passen aan de vraag [12](#page=12).
* **Disaster Recovery:** Mechanismen om te herstellen van storingen en dataverlies [12](#page=12).
* **Cloud-first mindset:** Ontworpen om optimaal te functioneren in cloudomgevingen [12](#page=12).
* **Ondersteuning voor 12factor-apps:** Vereenvoudigt de implementatie van applicaties die voldoen aan de principes van de 12factor.net [12](#page=12).
#### 2.2.3 Monolith vs. Microservices
De opkomst van containertechnologie gaat hand in hand met de trend om monolithische applicaties op te splitsen in kleinere, onafhankelijk werkende microservices [13](#page=13).
* **Monolithische app:** Alle functionaliteit bevindt zich in één enkele service (bijvoorbeeld binnen een VM of container) [13](#page=13).
* **Microservices:** Een applicatie wordt opgedeeld in kleine, discrete delen die onafhankelijk van elkaar functioneren en via lichte koppelingen (zoals REST) met elkaar communiceren. Elke service is eenvoudiger van opzet, maar de totale configuratie wordt complexer [13](#page=13).
> **Example:** Stel je een webwinkel voor. Een monolithische aanpak zou betekenen dat de catalogus, gebruikersbeheer, en bestelafhandeling allemaal in één applicatie draaien. In een microservices-architectuur zou de catalogus een aparte service kunnen zijn, gebruikersbeheer een andere, en de bestelafhandeling weer een derde, waarbij elk van deze services in zijn eigen container kan draaien [13](#page=13).
---
# Kubernetes: oorsprong, architectuur en terminologie
Dit onderdeel van de studiegids biedt een uitgebreide samenvatting van de oorsprong, architectuur en kernterminologie van Kubernetes, cruciaal voor het begrijpen van containerorkestratie.
## 3. Kubernetes: oorsprong, architectuur en terminologie
Kubernetes is ontstaan uit de behoefte aan efficiënte en schaalbare containerorkestratie, voortbouwend op de lessen van Google's interne Borg-project. Het doel was om hardware optimaal te benutten en applicaties op een schaalbare manier te beheren [14](#page=14) [15](#page=15).
### 3.1 Oorsprong en motivatie
De ontwikkeling van Kubernetes is sterk beïnvloed door Google's interne projecten, met name Borg, dat meer dan tien jaar vóór Kubernetes werd ontwikkeld (rond 2005). Borg was ontworpen om datacenterhardware met zeer hoge efficiëntie te laten draaien en de middelen maximaal te benutten. Het project was specifiek voor Google gebouwd en een van hun sterke punten. De motivatie om Kubernetes als open-source project te lanceren, kwam voort uit de wens om een product te delen dat ook voor andere organisaties nuttig kon zijn [15](#page=15) [16](#page=16).
Het idee achter Borg, en later Kubernetes, wordt metaforisch vergeleken met de 'Collective' uit Star Trek, een cybernetisch organisme dat individuen transformeert tot drones. Dit metafoor illustreert het doel van clusterbeheersystemen om services continu draaiende te houden [15](#page=15) [16](#page=16).
Interne codenamen voor het Kubernetes project waren "Project Seven" of "Project Seven of Nine", een knipoog naar Star Trek en bedoeld als een "vriendelijkere Borg" die meer gericht was op ontwikkelaars. De naam "Kubernetes" is afgeleid van het Griekse woord voor "helmsman" of "kapitein", passend bij de containerfilosofie die ook in de naam "Docker" aanwezig is. Een veelgebruikte afkorting is K8s, waarbij de '8' staat voor de acht letters tussen de 'K' en de 'S' [18](#page=18).
#### 3.1.1 Declaratieve versus imperatieve benadering
Kubernetes ondersteunt zowel declaratieve als imperatieve benaderingen voor het beheren van de staat van resources [19](#page=19).
* **Declaratief:** Beschrijft de gewenste eindtoestand. Bijvoorbeeld: "Ik wil dat je zit." [19](#page=19).
* **Imperatief:** Beschrijft de specifieke operaties die uitgevoerd moeten worden om de gewenste staat te bereiken. Bijvoorbeeld: "Pak iemand op en zet die persoon in een stoel." [19](#page=19).
De imperatieve methode wordt vaak gebruikt via CLI-tools, terwijl de declaratieve methode wordt toegepast met configuratiebestanden die de gewenste staat van resources beschrijven [19](#page=19).
#### 3.1.2 Control Loops en reconciliatie
Een cruciaal concept in Kubernetes is **reconciliatie**, waarbij het systeem voortdurend de huidige staat van resources vergelijkt met de gewenste staat en actie onderneemt om deze op elkaar af te stemmen. Dit gebeurt via **control loops**. Een voorbeeld hiervan is het gebruik van `kubectl apply -f desired_state.yaml`, waarbij Kubernetes de configuratie uit het YAML-bestand leest en de benodigde acties uitvoert om de gedefinieerde staat te realiseren [20](#page=20).
### 3.2 Kubernetes architectuur en kernterminologie
Kubernetes wordt doorgaans opgebouwd uit een cluster van machines, die opgedeeld zijn in nodes (#page=21, 22) [21](#page=21) [22](#page=22).
#### 3.2.1 Nodes
Nodes zijn de virtuele machines (VM's) of fysieke servers waarop de containers daadwerkelijk draaien. Ze kunnen functioneren als worker nodes of control plane nodes (voorheen master nodes genoemd) [21](#page=21).
#### 3.2.2 Cluster
Een cluster is een verzameling van één of meerdere nodes die samenwerken onder beheer van Kubernetes [22](#page=22).
#### 3.2.3 Pods
Pods zijn de kleinste, door Kubernetes te plannen eenheden. Een pod kan één of meerdere containers bevatten die samen één logische unit vormen, vaak gedeelde opslag en netwerkbronnen. Ze hebben een uniek IP-adres binnen het cluster [23](#page=23).
> **Tip:** Pods worden als **efemeer** beschouwd; ze kunnen te allen tijde worden beëindigd en opnieuw gestart [23](#page=23).
#### 3.2.4 Replicaset en Deployment
* **Replicaset:** Dit object zorgt ervoor dat een gespecificeerd aantal replica's (kopiëen) van een pod actief is [24](#page=24).
* **Deployment:** Een Deployment bouwt voort op Replicasets en biedt geavanceerdere mogelijkheden voor het beheren van applicaties, zoals rolling updates (updates zonder downtime), rollbacks naar eerdere versies (om de hersteltijd te verkorten) en verschillende implementatiestrategieën zoals Blue/Green of Canary deployments [24](#page=24).
#### 3.2.5 DaemonSet en StatefulSet
* **DaemonSet:** Zorgt ervoor dat er op elke node (of een geselecteerde subset van nodes) minimaal één exemplaar van een specifieke pod draait. Dit is nuttig voor taken zoals logging, monitoring of het implementeren van netwerkbeleid op alle nodes [25](#page=25).
* **StatefulSet:** Is ontworpen voor stateful applicaties. Het biedt stabiele netwerk-ID's, stabiele persistentie en wordt vaak gebruikt voor databases of gedistribueerde bestandssystemen waar persistente opslag en stabiele identifiers cruciaal zijn [25](#page=25).
#### 3.2.6 Services
Services zijn abstracties die een logische set van pods vertegenwoordigen en fungeren als een stabiele toegangspunt voor deze pods, zelfs als de onderliggende pods worden herstart of verplaatst. Ze maken applicaties zowel intern als extern toegankelijk [26](#page=26).
* **ClusterIP (Standaard):** Wijs een intern IP-adres toe aan de service, waardoor deze alleen binnen het cluster bereikbaar is [26](#page=26).
* **NodePort:** Opent een specifieke poort op elke node in het cluster, waardoor de service extern toegankelijk wordt via dat poortnummer op elk van de nodes [26](#page=26).
* **LoadBalancer:** Creëert een externe load balancer service die verkeer naar de pods stuurt. Dit wordt meestal beheerd door de cloudprovider [26](#page=26).
* **Ingress:** Biedt een API-object dat de toegang tot services binnen een cluster beheert, met name voor HTTP en HTTPS. Een Ingress controller (zoals Nginx of Traefik) verwerkt het verkeer en stuurt het op basis van regels (zoals hostnaam of pad) door naar de juiste services [26](#page=26).
---
# Kubernetes in de praktijk: implementatie en tools
Dit hoofdstuk duikt in de praktische aspecten van Kubernetes, met een focus op implementatie in de publieke cloud, het gebruik van de `kubectl` command-line interface, lokale testomgevingen, en voorbeelden van configuratiebestanden.
### 4.1 Kubernetes in de publieke cloud
Het gebruik van Kubernetes in de publieke cloud biedt aanzienlijke voordelen, voornamelijk door het verlagen van technische complexiteit en beheersoverhead. In deze omgeving worden de controleknooppunten (control nodes) beheerd door de cloudprovider zelf [28](#page=28).
#### 4.1.1 Integratie met cloudplatformen
Kubernetes-implementaties in de publieke cloud zijn doorgaans nauw geïntegreerd met het onderliggende cloudplatform. Dit uit zich onder andere in:
* Standaard logging van uitvoer naar cloudspecifieke loggingsystemen [28](#page=28).
* Het automatisch verzenden van clusterstatistieken naar monitoringdashboards [28](#page=28).
* Directe toegang tot het Virtual Private Cloud (VPC) netwerk [28](#page=28).
* Eenvoudige integratie met andere cloudcomponenten zoals databases, virtuele machines en beheerde Redis-diensten [28](#page=28).
### 4.2 De kubectl command-line interface
`kubectl` is de primaire command-line tool voor het communiceren met een Kubernetes API-server. Hiermee kunnen gebruikers wijzigingen aanbrengen in de gewenste staat van het cluster, die vervolgens wordt opgeslagen in `etcd`. De uitspraak van `kubectl` kan variëren, met gangbare varianten zoals "Kube Control", "Kube cee-tee-el", "Kube cuttle" en "Kube cuddle" [29](#page=29) [30](#page=30).
### 4.3 Lokale Kubernetes-testomgevingen
Voor lokale ontwikkeling en testen zijn er diverse opties om Kubernetes op je eigen machine te draaien, aangezien cloudproviders elk hun eigen specifieke installatieprocedures hebben. Populaire keuzes zijn [31](#page=31):
* Minikube [31](#page=31).
* Kind (Kubernetes in Docker) [31](#page=31).
* K3s (een lichtgewicht Kubernetes-distributie) [31](#page=31).
* Rancher [31](#page=31).
* Talos [31](#page=31).
### 4.4 Voorbeelden van YAML-bestanden
YAML (YAML Ain't Markup Language) is de standaardconfiguratietaal voor Kubernetes-objecten. Deze bestanden beschrijven de gewenste staat van resources zoals deployments, services en pods. Een voorbeeld van een `kube-deployment.yml` bestand voor een voorbeeldtoepassing is beschikbaar via GitHub [32](#page=32).
### 4.5 Nuttige bronnen voor verdere studie
Om je kennis van Kubernetes verder te verdiepen, zijn er diverse uitstekende bronnen beschikbaar:
#### 4.5.1 Educatieve YouTube-kanalen
* **TechWorldwith Nana:** Biedt diverse Kubernetes-gerelateerde video's, waaronder een specifiek voorbeeld: `https://www.youtube.com/watch?v=s_o8dwzRlu4` [33](#page=33).
* **That DevOps Guy:** Een kanaal met inhoud over DevOps en Kubernetes [33](#page=33).
* **Techno Tim:** Biedt tutorials en demonstraties, inclusief een HA k3s installatiegids [33](#page=33).
* **Jeff Geerling:** Bekend om zijn technische tutorials [33](#page=33).
#### 4.5.2 Gestructureerde leerplatformen
* **Kube Academy by VMWare Broadcom:** Biedt officiële cursussen en trainingsmateriaal over Kubernetes. De cursussen zijn te vinden op `https://kube.academy/courses` [34](#page=34).
#### 4.5.3 Documentaires en diepgaande content
* **Kubernetes the documentary:** Een documentaire die een dieper inzicht geeft in de geschiedenis en ontwikkeling van Kubernetes. Beschikbaar via LinkedIn Learning [35](#page=35).
* Een **disclaimer door een historische figuur** is beschikbaar via: `https://www.youtube.com/watch?v=9wvEwPLcLcA` [38](#page=38).
### 4.6 Aanvullende Kubernetes-features
Naast de basisfunctionaliteiten biedt Kubernetes een breed scala aan geavanceerde features die voor productieomgevingen cruciaal zijn. Enkele hiervan zijn [37](#page=37):
* **Helm:** Een pakketmanager voor Kubernetes die het beheren van applicatie-YAML's vereenvoudigt [37](#page=37).
* **Load balancing:** Het distribueren van netwerkverkeer over meerdere pods [37](#page=37).
* **Rolling updates:** Het gefaseerd uitrollen van nieuwe versies van applicaties met minimale downtime [37](#page=37).
* **Rollback:** Het terugkeren naar een vorige, stabiele versie van een applicatie [37](#page=37).
* **Secret management:** Het veilig opslaan en beheren van gevoelige informatie zoals wachtwoorden en API-sleutels [37](#page=37).
* **Canary deployments:** Een geavanceerde implementatiestrategie waarbij een nieuwe versie eerst naar een kleine groep gebruikers wordt uitgerold [37](#page=37).
* **Operators:** Een methode om stateful applicaties en hun managementtaken te automatiseren [37](#page=37).
* **Service discovery & Service mesh:** Mechanismen voor het vinden en communiceren tussen services, en voor het beheren van service-tot-service communicatie [37](#page=37).
### 4.7 Praktische laboratoriumnotities en commando's
Tijdens praktische labs met Kubernetes kunnen de volgende `kubectl` commando's zeer nuttig zijn [41](#page=41):
* Pods in alle namespaces weergeven, inclusief brede output:
`kubectl get pods –A –o wide` [41](#page=41).
* Lokale port-forwarding instellen naar een pod:
`kubectl port-forward nginx 9999:80 --address 0.0.0.0` [41](#page=41).
* Een deployment creëren:
`kubectl create deployment nginx --image=nginx --port=80` [41](#page=41).
* Gedetailleerde informatie over een deployment opvragen:
`kubectl describe deployment nginx` [41](#page=41).
* Het aantal replica's van een deployment schalen:
`kubectl scale deployment --replicas 3 nginx` [41](#page=41).
* YAML-bestanden toepassen om resources aan te maken of bij te werken:
`kubectl apply -f ` [41](#page=41).
#### 4.7.1 Netwerkconfiguratie voor labs
Voor labs op het Howest-netwerk is het soms noodzakelijk om verbinding te maken met de Howest-CIT-Hub SSID om toegang te krijgen tot de DNS-servers van Google [41](#page=41).
#### 4.7.2 Talos cluster demonstratie
Een voorbeeld van een Talos-cluster setup voor een lab omvat doorgaans:
* Eén controleknooppunt (control node) [40](#page=40).
* Twee werkende knooppunten (worker nodes) [40](#page=40).
* Gebruik van een onveranderlijk (immutable) besturingssysteem voor Kubernetes [40](#page=40).
* Het implementeren van diverse applicaties en het blootstellen ervan aan het cluster of de buitenwereld [40](#page=40).
* Scenario's voor het omgaan met falende knooppunten en het onderzoeken van schaalgedrag [40](#page=40).
> **Tip:** Het is cruciaal om te experimenteren met deze commando's en concepten in een lokale testomgeving (zoals Kind of Minikube) voordat je ze in productieomgevingen toepast. Dit helpt bij het opbouwen van praktische ervaring en het voorkomen van onbedoelde gevolgen.
---
## Veelgemaakte fouten om te vermijden
- Bestudeer alle onderwerpen grondig voor examens
- Let op formules en belangrijke definities
- Oefen met de voorbeelden in elke sectie
- Memoriseer niet zonder de onderliggende concepten te begrijpen
Glossary
| Term | Definition |
|------|------------|
| Datacenter | Een faciliteit die een grote groep computerservers en opslagsystemen bevat, inclusief de bijbehorende netwerkapparatuur en stroomvoorziening. |
| Virtualisatie | Het creëren van een virtuele versie van iets, zoals een besturingssysteem, opslagapparaat, netwerkbron of zelfs een datacenter, dat wordt beheerd via software. |
| Private Cloud | Een cloud computing-omgeving die exclusief is gereserveerd voor één organisatie, waardoor deze meer controle en privacy biedt, maar ook meer eigen beheer vereist. |
| Publieke Cloud | Cloud computing-diensten die worden aangeboden door externe providers over het openbare internet en beschikbaar zijn voor het grote publiek of grote groepen gebruikers. |
| Hypervisor | Software, firmware of hardware die fysieke computerbronnen creëert en beheert, zodat meerdere virtuele machines tegelijkertijd op een enkele fysieke machine kunnen draaien. |
| CI/CD pipelines | Continuous Integration (CI) en Continuous Delivery/Deployment (CD) zijn praktijken die worden gebruikt om software sneller en betrouwbaarder te ontwikkelen en te leveren door het automatiseren van bouw-, test- en implementatiestappen. |
| Infrastructure as Code (IaC) | Het proces van het beheren en provisioneren van IT-infrastructuur via machineleesbare definities, in plaats van via fysieke hardwareconfiguratie of interactieve configuratietools. |
| Auto-scaling | Een functie die het aantal actieve serverinstanties automatisch aanpast op basis van de vraag, waardoor prestaties en kosten worden geoptimaliseerd. Dit kan horizontaal (meer instanties) of verticaal (grotere instanties) zijn. |
| Orchestratie | Het automatiseren van het beheer, de coördinatie en de implementatie van complexe IT-systemen, applicaties en services. |
| Chef, Puppet, Ansible | Populaire tools voor configuratiebeheer en orkestratie die helpen bij het automatiseren van de installatie, configuratie en het beheer van servers en applicaties. |
| Terraform | Een open-source Infrastructure as Code (IaC)-tool die het mogelijk maakt om infrastructuur veilig en efficiënt te bouwen, wijzigen en versioneren. |
| Container | Een lichtgewicht, uitvoerbaar softwarepakket dat alles bevat wat nodig is om een applicatie uit te voeren, inclusief code, runtime, systeertools, systeembibliotheken en instellingen. |
| Docker | Een platform dat ontwikkelaars in staat stelt om applicaties te bouwen, te distribueren en uit te voeren met behulp van containers. |
| Docker Compose | Een tool voor het definiëren en uitvoeren van multi-container Docker-applicaties, waarbij de configuratie in een YAML-bestand wordt opgeslagen. |
| Kubernetes | Een open-source container-orkestratiesysteem dat de implementatie, schaling en het beheer van containergebaseerde applicaties automatiseert. |
| Monolith | Een applicatie die is opgebouwd als een enkele, ondeelbare eenheid, waarbij alle functionaliteit in één codebase is ondergebracht. |
| Microservices | Een architectuurstijl die een applicatie opbouwt als een verzameling kleine, onafhankelijke services die losjes met elkaar zijn gekoppeld, vaak via API’s. |
| High Availability (HA) | Het vermogen van een systeem om operationeel te blijven gedurende een minimale periode, ondanks storingen of uitval van componenten. |
| Scalability | Het vermogen van een systeem, netwerk of proces om uit te breiden om de volledige eisen aan te kunnen, of om te groeien om de vraag aan te kunnen. |
| Disaster Recovery | Een plan en reeks procedures die organisaties gebruiken om snel te kunnen herstellen van een storing, inclusief natuurrampen, menselijke fouten of cyberaanvallen. |
| 12-factor app | Een methode voor het bouwen van SaaS-applicaties die is gebaseerd op twaalf best practices om ervoor te zorgen dat applicaties schaalbaar, onderhoudbaar en efficiënt zijn. |
| Borg | Een intern project van Google dat diende als voorloper van Kubernetes, gericht op clusterbeheer en efficiënt resourcegebruik in datacenters. |
| cgroups (control groups) | Een Linux-kernelfunctie die bronnen van processen kan beperken, rekening houden met en isoleren, zoals CPU, geheugen, I/O en netwerk. |
| Declarative | Een programmeerparadigma waarbij de programmeur specificeert wat het gewenste eindresultaat is, zonder expliciet te definiëren hoe dat resultaat bereikt moet worden. |
| Imperative | Een programmeerparadigma waarbij de programmeur expliciet een reeks instructies definieert om een taak uit te voeren. |
| Reconciliation | Het proces waarbij een systeem de huidige staat van de infrastructuur aanpast om deze in overeenstemming te brengen met de gewenste staat, zoals gedefinieerd in configuratiebestanden. |
| Node | Een werkende machine (virtueel of fysiek) in een Kubernetes-cluster waarop pods worden uitgevoerd. |
| Cluster | Een groep van nodes die samenwerken om containergebaseerde applicaties te beheren en uit te voeren. |
| Pod | De kleinste implementeerbare eenheid in Kubernetes, die één of meer containers bevat en gedeelde bronnen deelt, zoals netwerk en opslag. |
| ReplicaSet | Een Kubernetes-object dat ervoor zorgt dat een gespecificeerd aantal pod-replica's altijd actief is. |
| Deployment | Een Kubernetes-object dat de gewenste staat van een applicatie beschrijft en de implementatie en het updaten van pods beheert. |
| DaemonSet | Zorgt ervoor dat een kopie van een specifieke pod op elke node in het cluster (of een selectie daarvan) draait. |
| StatefulSet | Een Kubernetes-object dat de implementatie en het beheer van stateful applicaties mogelijk maakt, met stabiele netwerkidentificatoren en persistente opslag. |
| Service | Een Kubernetes-object dat een logische set pods definieert en een beleid voor toegang tot die pods bepaalt, waardoor ze extern of intern toegankelijk worden. |
| ClusterIP | Een type Kubernetes Service dat een intern IP-adres toewijst aan de Service, waardoor deze alleen toegankelijk is binnen het cluster. |
| NodePort | Een type Kubernetes Service dat een statische poort op elke Node opent en verkeer doorstuurt naar de Service. |
| LoadBalancer | Een type Kubernetes Service dat een externe load balancer provisioneert om de toegang tot de Service te beheren. |
| Ingress | Een API-object dat de regels definieert voor hoe externe HTTP(S)-verkeer toegang krijgt tot services binnen een cluster. |
| kubectl | De command-line interface (CLI) tool voor het communiceren met het Kubernetes API-server om het cluster te beheren. |
| Minikube | Een tool die het mogelijk maakt om een single-node Kubernetes-cluster lokaal op je machine te draaien voor ontwikkelingsdoeleinden. |
| Kind (Kubernetes in Docker) | Een tool om lokale Kubernetes-clusters te draaien met behulp van Docker-containers als "nodes". |
| K3s | Een lichtgewicht, gecertificeerde Kubernetes-distributie die is geoptimaliseerd voor IoT- en edge computing-omgevingen. |
| Helm | Een package manager voor Kubernetes die het definiëren, installeren en upgraden van zelfs de meest complexe Kubernetes-applicaties vereenvoudigt. |
| Rollback | Het proces van het terugkeren naar een eerdere, stabiele versie van een applicatie of configuratie na een mislukte update. |
| Secret management | Het veilig opslaan en beheren van gevoelige informatie, zoals wachtwoorden, API-sleutels en certificaten, in Kubernetes. |
| Canary deployment | Een deploymentstrategie waarbij een nieuwe versie van een applicatie geleidelijk wordt uitgerold naar een kleine groep gebruikers voordat deze volledig wordt uitgerold. |
| Operators | Een methode om Kubernetes-applicaties te verpakken, implementeren en beheren. Een Operator is een aanpassing van de Kubernetes API die een applicatie beheert. |
| Service discovery | Het mechanisme waarmee applicaties de netwerklocaties van andere services die ze nodig hebben, kunnen vinden. |
| Service mesh | Een toegewijde infrastructuurlaag die service-to-service communicatie binnen een microservices-architectuur beheert, met functies zoals load balancing, encryptie en observability. |
| Talos | Een Linux-distributie geoptimaliseerd voor Kubernetes, die een immutable OS-structuur biedt voor verbeterde beveiliging en beheer. |