Wat ondersteuning voor stateful applicaties in Kubernetes van belang maakt

Stateful applicaties met Kubernetes
Stateful applicaties met Kubernetes
Home / Blog & Nieuws / Cloud / Cloud-native / Wat ondersteuning voor stateful applicaties in Kubernetes van belang maakt

Kubernetes is in enkele jaren tijd uitgegroeid tot een zeer populair open source-project. Zo blijkt uit onderzoek van Red Hat onder 500 DevOps, engineering en security professionals dat 88% Kubernetes gebruikt. Een van de ontwikkelingen die hieraan bijdraagt is de ondersteuning van stateful applicaties, wat de mogelijkheden aanzienlijk vergroot. Waarom is deze ondersteuning van belang?

Wat is stateless en stateful?

Een traditionele applicatie onthoudt allerlei variabele informatie. Denk hierbij aan voorkeuren van gebruikers, maar bijvoorbeeld ook aan eerder geopende documenten. Een dergelijke applicatie is stateful.

Containers zijn echter oorspronkelijk ontworpen om stateless te zijn. Stateless wil in dit geval zeggen dat de zogeheten state van een applicatie niet wordt opgeslagen. Belangrijk, aangezien een container uitgerold wordt met behulp van een vastgebakken image. Deze image is onveranderlijk en biedt dan ook geen ruimte voor het opslaan van de state.

Waarom is het opslaan van de state van belang?

Lang niet iedere containerized applicatie is echter vanaf de grond ontworpen om containerized te zijn. In veel gevallen gaat het om legacy applicaties, die gemoderniseerd zijn. Zij zijn vervolgens aangepast en geoptimaliseerd voor containers.

Dit betekent in de praktijk dat veel van deze applicaties niet stateless zijn ontworpen, maar juist stateful. Bij een stateful applicatie wordt de state van de applicatie juist wel bewaard. Gelukkig ondersteunt Kubernetes vandaag de dag ook de opslag van de state van een containerized applicatie.

StatefulSet

Ondersteuning voor stateful applicaties is in Kubernetes mogelijk dankzij StatefulSets, workloads API objecten voor het beheren van stateful applicaties. Kubernetes bewaart de state van een applicatie in dit geval op een storage volume. StatefulSets beheert de uitrol en het schalen van een reeks pods. En zorgt dat iedere pod een unieke identifier toegewezen krijgt, die ook indien de pod opnieuw wordt uitgerold behouden blijft. Deze identifier is gekoppeld aan een storage volume. Rol je de pod opnieuw uit? Dan koppel je de nieuwe pod dankzij deze identifier eenvoudig aan het juiste storage volume.

In een blogpost over het Data on Kubernetes 2021 rapport op basis van een onderzoek onder 500 Kubernetes gebruikers schrijft Data on Kubernetes Community, een open community voor data op Kubernetes: “Hoewel Kubernetes een sterk stateless-gericht verleden kent, is 90% van de organisaties van mening dat het inmiddels geschikt is voor stateful workloads, en een grote meerderheid (70%) draait hen in productie waarbij databases de lijst aanvoeren. Bedrijven rapporteren significante voordelen op het gebied van standaardisatie, consistentie en beheer als belangrijke drijfveren.”

Geschikt voor meer applicaties

Hoewel containerized applicaties initieel zijn ontworpen om stateless te zijn, biedt het containerorkestratieplatform Kubernetes vandaag de dag ook ondersteuning voor stateful applicaties. Dit breidt de mogelijkheden van containers aanzienlijk uit en maakt Kubernetes geschikt voor meer applicaties. Hoe populair Kubernetes is blijkt eveneens uit het Data on Kubernetes 2021 rapport van DoKC. De helft van de respondenten draait meer dan 50% van hun productieworkloads op Kubernetes. Geavanceerdere gebruikers rapporteren hierbij aanzienlijke productiviteitwinst.

Axel Schutte
Online Marketing Manager
Categorieën: Cloud-native, News