We do not directly use Kubernetes storage classes in either of the use cases that we describe in this white paper; however, the Kubernetes storage classes are closely related to the CSI Driver for Dell EMC PowerFlex plug-in. PowerFlex uses a Container Storage Interface (CSI)-compatible driver with Kubernetes, supporting the broadest set of features for block storage integration. Using storage classes, persistent applications dynamically provision PowerFlex volumes directly for any persistent volume requirements. Kubernetes provides administrators with an option to describe various levels of storage features and differentiate them by quality-of-service (QoS) levels, backup policies, or other storage-specific services. Kubernetes is agnostic about these class representations. In other management systems, this concept is sometimes referred to as storage profiles. The unique features of PowerFlex make it an excellent complement to Kubernetes for stateful applications. The storage classes objects are required during Dynamic Volume Provisioning, but we are performing Static Volume Provisioning in our use cases that are described in the following sections.
The CSI Driver for Dell EMC PowerFlex creates three storage classes in Kubernetes during installation. The PowerFlex classes, which can be viewed from the Kubernetes dashboard, are predefined. These storage classes enable users to specify the amount of bandwidth to be made available to persistent storage that is created on the array.
Using PowerFlex predefined storage classes efficiently scales an environment by defining performance limits. For example, a storage class of low for a pool of 100 containers limits containerized applications so that they consume no more than their allocated bandwidth. Such limitations help to maintain more reliable storage performance across the entire environment.
Using QoS-based storage classes helps balance the resources that containerized applications consume and the total amount of storage bandwidth. For scenarios that require a more customized set of storage classes than those that the CSI Driver for Dell EMC PowerFlex creates, you can configure PowerFlex storage system QoS in Kubernetes. In creating a custom QoS policy, you can define maximum bandwidth per GB or, alternatively, maximum IOPS. You can also define a burst percentage, which is the amount of bandwidth or IOPS above the maximum limit that the container can use for temporary performance.
The benefits of using predefined storage classes and customized QoS policies include: