Site icon Cloudlets

Storage provisioning in Kubernetes

k8s-persitent-storage

Als je gebruik maakt van containers of Kubernetes, dan komt het Storage-vraagstuk altijd wel voorbij. Een container bevat geen persistent data. Als je container crasht en herstart, dan ben je je data kwijt. Daarom dien je belangrijke data buiten je container op te slaan. Dat kan door gebruik te maken van persistent volumes.

Een persistent volume is een volume op een storagemedium dat onafhankelijk van de containers zal blijven bestaan en niet verwijderd zal worden bij problemen met je container of node failures. Alleen als je daar expliciet de opdracht voor geeft, wordt je storage verwijderd.

Een persistent volume maak je aan door deze “aan te vragen” bij een Storage Provisioner. Je deployments of containers kunnen storage claimen bij de Storage Provisioner. Die provisioner kan vervolgens geautomatiseerd de gevraagde hoeveelheid storage beschikbaar stellen. In de persistent volume claim beschrijf je de specificaties van het volume dat je nodig hebt. Deze specificaties zijn onder andere grootte van het volume, van welke storage provisioner je storage wilt hebben (daarover verderop meer) en in welke acces-mode je deze persistent volume wilt hebben.

Kubernetes detecteert nieuwe storage claims en zorgt dat deze claims door de juiste storage provisioner in behandeling genomen worden. De provisioner maakt vervolgens het gevraagde volume aan en koppelt het aan je claim, zodat de storage door je deployment in gebruik genomen kan worden. Dit persistent volume blijft bestaan als je deployment wordt verwijderd en kan dus ook door nieuwe deployments gebruikt worden.

Storage Provisioners: Verschillende opties

De storage provisioner bestaat uit één of meerdere containers die binnen het Kubernetes cluster draaien. Deze containers zijn verantwoordelijk voor het detecteren van persistent volume claims (PVC’s) en zorgen ervoor dat persistent volume worden aangemaakt op de gekoppelde storage en worden gekoppeld in Kubernetes. Maak je gebruik van Managed Kubernetes bij een Cloud-provider zoals Google Cloud, Amazon Web Services of Microsoft Azure, dan is er al een Storage Provisioner geconfigureerd die je direct kunt gebruiken om storage aan te maken.

Heb je zelf je Kubernetes cluster opgezien, dan dien je handmatig een Storage Provisioner te configureren. Dat kan op vele verschillende manieren. Wat je altijd nodig hebt is één storagesysteem en een provisioner die dat storage systeem koppelt met je Kubernetes cluster. Er zijn diverse open source projecten waarmee praktisch alle storagesystemen te koppelen zijn aan Kubernetes. Ook is het mogelijk om een NFS Share te koppelen aan je cluster, zodat je storage provisioner volumes op deze NFS Share aanmaakt.

Maak je geen gebruik van externe storage, dan is het mogelijk om de lokale storage van de nodes van je Kubernetes-cluster samen te voegen tot één storage pool waarop persistent volumes worden aangemaakt door de storage provisioner. Dit kan bijvoorbeeld met Rancher Longhorn.

Een derde optie is een specifieke integratie van je storage provider te gebruiken. De grote spelers op de storage markt zien de grote opkomst van containers/kubernetes ook en hebben ook de behoefte aan een betrouwbaar, schaalbaar en veilige storage oplossing gezien. De 4 grootste vendoren hebben allen een eigen al dan niet open-source oplossing. De basis hiervan is hetzelfde. Allen maken zij een storage provisioner in je cluster aan die de persistent volumes op het gekoppelde storage systeem aanmaken. Het voordeel van deze eigen integraties zit in het gebruik maken van de specifieke opties die alle storage vendoren hebben, denk hierbij aan compressie en deduplicatie van je data en andere vendor specifieke functies.

Voorbeelden van provisioners van storage leveranciers:

Advies nodig over juist gebruik van de storage of hulp nodig met de inrichting hiervan? Laat je contactgegevens achter in onderstaande formulier voor een gratis adviesgesprek!