In onze vorige blogpost introduceerden we Kubernetes en zijn belangrijkste concepten. Nu gaan we dieper in op één van de meest cruciale aspecten: het beheer van CPU en geheugen. Het verschil tussen deze resources lijkt op het eerste gezicht subtiel, maar heeft verstrekkende gevolgen voor zowel de stabiliteit als de kosten van je cloudomgeving.
Elke container in Kubernetes heeft resources nodig om te kunnen draaien. De twee belangrijkste zijn CPU en geheugen. In Kubernetes configureer je deze via 'requests' en 'limits':
apiVersion: v1
kind: Pod
metadata:
name: resource-demo
spec:
containers:
- name: app
resources:
requests:
memory: "1Gi"
cpu: "500m"
limits:
memory: "2Gi"
cpu: "2000m"
Deze configuratie vertelt Kubernetes dat:
CPU is wat we een 'compressible' resource noemen. Dit betekent dat het systeem CPU-tijd dynamisch kan verdelen zonder dat applicaties crashen. Wanneer er niet genoeg CPU beschikbaar is:
Stel je hebt twee containers:
Als er CPU-schaarste is, krijgt Container B altijd twee keer zoveel CPU als Container A, vanwege de 2:1 verhouding in requests.
Geheugen is 'non-compressible'. Als een applicatie geheugen heeft gealloceerd, kan het systeem dit niet zomaar terugnemen. Dit leidt tot:
Voor kritieke services zoals databases is het vaak verstandig om geheugen request en limit gelijk te zetten. Dit voorkomt dat de container meer geheugen alloceert dan gegarandeerd beschikbaar is.
Een veel voorkomend probleem is 'overcommitment', vooral met geheugen. Stel je hebt een node met 16GB geheugen:
apiVersion: v1
kind: Pod
metadata:
name: risky-config
spec:
containers:
- name: app-1
resources:
requests:
memory: "2Gi"
limits:
memory: "8Gi"
- name: app-2
resources:
requests:
memory: "2Gi"
limits:
memory: "8Gi"
Deze configuratie is riskant omdat:
Het configureren van resources is geen eenmalige actie. Je hebt inzicht nodig in:
Bij Krane Labs zien we vaak dat teams worstelen met resource configuratie. Onze expertise helpt bij:
Het effectief beheren van CPU en memory in Kubernetes vereist begrip van hun fundamentele verschillen. Met de juiste configuratie en monitoring voorkom je zowel onnodige kosten als onverwachte downtime. Bij Krane Labs helpen we je niet alleen met de initiële setup, maar zorgen we voor continue optimalisatie naarmate je workload evolueert.
Wil je weten hoe je resources optimaal kunt configureren voor jouw specifieke use case? Neem contact met ons op voor een gratis analyse van je huidige setup.