If you deal with Kubernetes, you know that storage is one of the core building blocks of the cluster infrastructure. It is as important as the compute building block delivered by the worker nodes. Since the power of the cluster is always measured in terms of the number of worker nodes and their configuration, storage doesn’t get its share of attention.
Imagine this: you configured a powerful bare-metal cluster and want to run a highly available and mission-critical workload on it. Without a solid storage engine, your cluster is only good for running stateless and ephemeral workloads that don’t need persistence. But any enterprise application is a combination of both — stateless and stateful services. You wouldn’t be able to justify the investment made in the brand new Kubernetes cluster if you are unable to run end-to-end applications on it.
When you install the open source, up-steam Kubernetes distribution, it doesn’t come with a high-performance storage engine. Unlike managed Kubernetes services in the public cloud that come with default storage classes mapped to their respective block storage services, your cluster doesn’t have any storage class.
A persistent volume is to storage what a node is to compute.
Just like the way you used kubeadm to configure and join nodes to the cluster, you are expected to provision storage and expose it to the applications via the storage classes and persistent volumes. Remember this — a persistent volume is to storage what a node is to compute. You need both to run any meaningful application on Kubernetes.
You may want to use in-built primitives for creating persistent volumes (PV) based on emptyDir and hostPath. But, they are not designed for reliability and availability. They are yet to support the Container Storage Interface (CSI) which promises some of the features such as volume snapshots for PVs that bring backup and restore capabilities to volumes.
The other choice is to use NFS or GlusterFS as a distributed filesystem for your Kubernetes cluster. But these shared filesystems are not designed for cloud native environments. They do not deliver the performance required by IO-intensive stateful workloads.
Most of the commercially available storage platforms are not available for evaluation. There is no easy path to upgrade from a free version to the commercial edition backed by professional services and support.
Portworx, one of the leading cloud native storage startups, launched Portworx Essentials, a free edition of its storage platform. It comes with a no-strings-attached license that you can use on any cluster with less than five nodes.
Portworx Essentials can be easily upgraded to Portworx Enterprise — the fully-fledged storage platform with enterprise capabilities such as RBAC, backup/restore, migration, and business continuity.
5 Reasons to Consider Portworx Essentials
1. It’s a Free Overlay Storage Platform for Kubernetes
Portworx Essentials is a free forever license to use a limited version of the Portworx Storage Platform. You can install it in Kubernetes environments running in bare-metal clusters, self-hosted clusters deployed in the public cloud, or managed services such as GKE, AKS, and EKS.
Portworx Essentials supports up to 30 containers per node and a maximum of 500 volumes per cluster.
2. Portworx Essentials Is a CSI Compliant Storage Engine
The Container Storage Interface (CSI) specification was developed as a standard for exposing arbitrary block and file storage systems to containerized workloads on Kubernetes. Since Portworx Essentials is CSI compliant, it supports capabilities such as dynamic provisioning, volume snapshots for performing backup and restore.
3. Take Advantage of Application-Consistent Snapshots and Cloud Snapshots
Portworx has a feature called 3DSnap that enables storage administrators to group and snapshot persistent data volumes as a single unit. This is extremely useful in maintaining an application-consistent backup of complex applications. For each 3DSnap, Portworx supports specifying pre and post rules that are run on the application pods using the volumes being snapshotted. For example, before taking a 3DSnap of a Cassandra statefulset, a rule can be run to flush the data to the disk to avoid an inconsistent backup.
Portworx Essentials supports up to five 3DSnaps per volume.
4. Consistent Storage Platform across Development and Production Environments
Organizations can start with Portworx Essentials running in the development and test environments with fewer worker nodes while investing in Portworx Enterprise for larger clusters running in the production environment. This ensures consistency across the clusters by maintaining the same storage class, PVC names, volume snapshots, and 3DSnap configuration.
5. Easy Upgrade Path to Portworx Enterprise
Users running Portworx Essentials can easily upgrade to Portworx Enterprise without any disruption to the cluster and workloads.
Getting Started with Portworx Essentials
Start by choosing Portworx Essentials in the very first step.
The generated specification has new parameters such as OEM and User which associate the installation with Portworx Essentials.
Unlike the enterprise edition, you don’t have the choice of using an external etcd cluster. Instead, the KVDB service is embedded in the installation.
Once it is installed, you can find the daemonset running on all the nodes. The second container in the pod reflects the CSI driver deployed as a sidecar.
This cluster is now registered with PX-Central which associates your username with the cluster id.
Running pxctl status shows that the details of the storage cluster.
Notice that the license shows that we are running PX-Essentials.
It is possible to run PX-Essentials in air-gapped environments. Whenever the cluster accesses the Internet, Portworx Essentials will automatically renew the license for the next 24 hours.
If you are running smaller Kubernetes clusters that need a reliable storage platform, give Portworx Essentials a try. It’s one of the best cloud native data platforms available in the market.
Portworx is a sponsor of The New Stack.