Kubernetes is quick turning into an business normal, with as much as 94% of organizations deploying their providers and functions on the container orchestration platform, per a survey. One of many key causes firms deploy on Kubernetes is standardization, which lets superior customers see productiveness positive aspects of as much as two instances.
Standardizing on Kubernetes offers organizations the flexibility 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. Nevertheless, the neighborhood just lately modified the paradigm and introduced options resembling StatefulSets and Storage Lessons, which make utilizing knowledge on Kubernetes attainable.
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 value it.
Do it progressively
Kubernetes is on its approach to being as in style as Linux and the de facto method of working any software, anyplace, in a distributed vogue. Utilizing Kubernetes entails studying loads of technical ideas and vocabulary. For example, newcomers would possibly battle with the numerous Kubernetes logical models resembling containers, pods, nodes, and clusters.
In case you are not working Kubernetes in manufacturing but, don’t bounce straight into knowledge workloads. As a substitute, begin with shifting stateless functions to keep away from dropping knowledge when issues go sideways.
In the event 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 restrictions and specificities
As soon as you’re conversant in basic Kubernetes ideas, dive into the specifics for stateful ideas. For instance, as a result of functions could have totally different storage wants, resembling efficiency or capability necessities, you should present the proper underlying storage system.
What the business usually calls storage “profiles” is termed Storage Lessons in Kubernetes. They supply a approach to describe the several types of lessons a Kubernetes cluster can entry. Storage lessons can have totally different quality-of-service ranges, resembling I/O operations per second per GiB, backup insurance policies, or arbitrary insurance policies, resembling binding modes and allowed topologies.
One other important element to know is StatefulSet. It’s the Kubernetes API object used to handle stateful functions, and presents key options resembling:
- Steady, distinctive community identifiers that allow you to hold monitor of quantity, and detach and reattach them as you please;
- Steady, persistent storage in order that your knowledge is secure;
- Ordered, swish deployment and scaling, which is required for a lot of Day 2 operations.
Whereas StatefulSet has been a profitable substitute 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 dimensions of your software knowledge set is about to develop above the present allotted storage capability. There are workarounds, however such limitations should be understood properly forward of time in order that the engineering staff is aware of find out how to deal with them.