Kubernetes is quick changing into an trade normal, with as much as 94% of organizations deploying their providers and purposes on the container orchestration platform, per a survey. One of many key causes corporations deploy on Kubernetes is standardization, which lets superior customers see productiveness positive aspects of as much as two occasions.
Standardizing on Kubernetes provides organizations the power to deploy any workload, anyplace. However there was a lacking piece: the know-how assumed that workloads have been ephemeral, which means that solely stateless workloads might be safely deployed on Kubernetes. Nonetheless, the group lately modified the paradigm and introduced options equivalent to StatefulSets and Storage Lessons, which make utilizing information on Kubernetes doable.
Whereas working stateful workloads on Kubernetes is feasible, it’s nonetheless difficult. On this article, I present methods to make it occur and why it’s price it.
Do it progressively
Kubernetes is on its solution to being as fashionable as Linux and the de facto method of working any software, anyplace, in a distributed style. Utilizing Kubernetes includes studying a whole lot of technical ideas and vocabulary. As an example, newcomers would possibly wrestle with the various Kubernetes logical models equivalent to containers, pods, nodes, and clusters.
If you’re not working Kubernetes in manufacturing but, don’t leap instantly into information workloads. As an alternative, begin with transferring stateless purposes to keep away from dropping information when issues go sideways.
Should you can’t discover an operator that matches your wants, don’t fear, as a result of most of them are open-source.
Perceive the constraints and specificities
As soon as you’re acquainted with common Kubernetes ideas, dive into the specifics for stateful ideas. For instance, as a result of purposes could have completely different storage wants, equivalent to efficiency or capability necessities, you should present the right underlying storage system.
What the trade typically calls storage “profiles” is termed Storage Lessons in Kubernetes. They supply a solution to describe the several types of lessons a Kubernetes cluster can entry. Storage lessons can have completely different quality-of-service ranges, equivalent to I/O operations per second per GiB, backup insurance policies, or arbitrary insurance policies, equivalent to binding modes and allowed topologies.
One other vital element to grasp is StatefulSet. It’s the Kubernetes API object used to handle stateful purposes, and affords key options equivalent to:
- Steady, distinctive community identifiers that allow you to preserve observe of quantity, and detach and reattach them as you please;
- Steady, persistent storage in order that your information is protected;
- Ordered, sleek deployment and scaling, which is required for a lot of Day 2 operations.
Whereas StatefulSet has been a profitable alternative for the notorious PetSet (now deprecated), it’s nonetheless imperfect and has limitations. For instance, the StatefulSet controller has no built-in support for volume (PVC) resizing — which is a significant problem if the scale of your software information set is about to develop above the present allotted storage capability. There are workarounds, however such limitations have to be understood nicely forward of time in order that the engineering group is aware of deal with them.