Kubernetes voert toepassingen in containers uit op een cluster met machines en houdt ze in de status die jij beschrijft. Dit doet het door taken aan de juiste machines toe te wijzen en het verkeer naar de juiste bestemmingen te leiden en te controleren op storingen en wijzigingen.
De basisstroom
1. Je beschrijft wat je wilt uitvoeren
De meeste Kubernetes-workloads beginnen als een opgegeven 'gewenste status' (wat moet worden uitgevoerd, hoeveel exemplaren en hoe ze beschikbaar moeten worden gemaakt). Kubernetes is opgebouwd rond declaratieve configuratie en automatisering.
2. Kubernetes bepaalt waar het moet worden uitgevoerd
Kubernetes plant containers op machines in het cluster op basis van beschikbare rekenresources en wat elke container nodig heeft. Containers worden uitgevoerd in pods, de eenheid die Kubernetes op een machine plaatst.
3. Kubernetes blijft controleren wat er echt gebeurt versus je gewenste status
Controllers bewaken de cluster en werken eraan om de huidige status dichter bij de gewenste status te brengen, waarbij ze de API-server gebruiken om wijzigingen aan te brengen.
Containerplanning en dagelijks beheer
Plannen draait om de beslissing Waar moet dit worden uitgevoerd?
1. Pods worden gepland, niet afzonderlijke containers
Kubernetes groepeert containers in pods en plaatst deze pods vervolgens op machines.
2. De planner wijst pods toe aan een geschikt knooppunt
De kube-scheduler zoekt naar pods die nog niet zijn toegewezen en selecteert er een knooppunt voor.
3. Knooppuntagents houden de pods actief
Op elk knooppunt zorgt kubelet ervoor dat de pods worden uitgevoerd (inclusief hun containers).
Taakverdeling en servicedetectie
Containers en pods kunnen worden gemaakt, verplaatst of vervangen, zodat toepassingen stabiele manieren nodig hebben om elkaar te vinden.
Servicedetectie en taakverdeling zijn ingebouwd gedrag
Kubernetes beheert servicedetectie en maakt gebruik van taakverdeling zodat verkeer kan worden gerouteerd, zelfs als pods na verloop van tijd veranderen.
Services bieden een stabiel adres voor een veranderende set pods
De Service-API biedt een stabiel IP-adres of een stabiele hostnaam voor een service die wordt ondersteund door een of meer pods. Kubernetes houdt de ondersteunende pods bij via EndpointSlice-objecten.
Updates voor verkeersroutering wanneer pods worden gewijzigd
Wanneer pods achter een service worden gewijzigd, wordt de serviceroutering aangepast zodat het verkeer de huidige back-ends blijft bereiken.
Toepassingen schalen (en waarom de gewenste status belangrijk is)
Kubernetes kan workloads opschalen naar de status die je instelt, inclusief opschalen op basis van rekengebruik.
Algemene ideeën voor schaalaanpassing zijn onder andere:
Meer replica's (meer pods) om een hogere vraag aan te kunnen.
Minder replica's wanneer de vraag afneemt.
Resourcetracering zodat plaatsingsbeslissingen overeenkomen met de CPU- en geheugenbehoeften.
Dit sluit aan op het model van de gewenste status: jij geeft de doelstatus op en controllers blijven eraan werken.
Zelfherstel: wat er gebeurt als er iets stukgaat
Kubernetes omvat zelfherstelgedrag dat is gericht op het behouden van de status en beschikbaarheid van workloads. Hierbij gaat het om het volgende:
Mislukte containers opnieuw starten (opnieuw opstarten op containerniveau).
Vervangen van mislukte pods om het aangevraagde aantal replica's te behouden (replicavervanging).
Workloads opnieuw plannen wanneer knooppunten niet meer beschikbaar zijn.
Het verwijderen van mislukte pods uit service-eindpunten, zodat verkeer alleen naar gezonde pods (taakverdeling voor services) gaat.
Zelfherstel controleert de containerstatus en start deze opnieuw of repliceert deze wanneer er problemen optreden.
De rol van Kubernetes-KPI's
Key Performance Indicators (KPI's of metrische gegevens) worden gebruikt om inzicht te krijgen in de status van het cluster en het gedrag van de workload.
Waar KPI's vandaan komen
Kubernetes-systeemonderdelen geven metrische gegevens (Prometheus-indeling) uit die nuttig zijn voor dashboards en waarschuwingen.
Metrische gegevens zijn doorgaans beschikbaar op het HTTP-eindpunt van metrische gegevens van een onderdeel, inclusief onderdelen zoals kube-apiserver, kube-scheduler, kubelet, kube-proxy, en kube-controller-manager.
Voorbeelden van wat KPI's je helpen ontdekken
Clusterstatussignalen (metrische gegevens op onderdeelniveau en foutpatronen)
Stabiliteit van workloads (bijvoorbeeld frequente herstarts of vervangingen)
Capaciteitsdruk (resourcetoewijzing versus vraag, gekoppeld aan schaalbeslissingen)
Waarom dit belangrijk is in de dagelijkse praktijk
Bewaking biedt teams een completer beeld van clusterresources, de Kubernetes-API, containers en logboeken, waardoor de feedbacklus tussen problemen en oplossingen wordt verkort.