CSI Topology
The CSI (Container Storage Interface) topology feature enables intelligent and topologically aware storage provisioning for Kubernetes applications. Specifically, for FlashArray Direct Access volumes and FlashBlade Direct Access filesystems, this feature ensures that storage is provisioned on the FlashArray/FlashBlade accessible from the same set of Kubernetes nodes where the application pods are running. This results in optimized storage placement, improved performance, and enhanced fault tolerance.
How CSI Topology works
The CSI topology feature uses topology labels to describe the placement of each FlashArray or FlashBlade resource. These labels can define attributes such as:
- Region: Geographical area of the data center.
- Zone: Logical subdivision within the region.
- Datacenter or rack: Specific physical locations.
- Provider: Cloud or infrastructure provider details.
When an application requests storage, the CSI driver evaluates the topology labels to determine the best storage resource close to the application pod. This proximity-based storage allocation:
- Reduces latency: Ensures faster access to storage by minimizing network hops.
- Enhances performance: Improves data throughput for applications.
- Boosts fault tolerance: Supports replication across zones or regions, protecting against localized failures.
CSI Topology for FlashArray and FlashBlade
Portworx CSI extends the capabilities of Kubernetes storage by integrating topology-aware provisioning for FlashArray and FlashBlade resources. It simplifies managing and optimizing storage for applications with key features such as:
- Node labeling with topology information:
Kubernetes nodes can be labeled with attributes likeregion
,zone
, andrack
. These labels guide PX CSI driver to provision storage on a FlashArray/Flashblade that aligns with the application's location. - Configuring topology in StorageCluster:
During setup, you can include specific topology-related configurations:- Create a
px-pure-secret
to define topology labels for FlashArray or FlashBlade resources.
- Create a
- Dynamic node affinity and volume binding modes:
By defining node affinity in pod or StatefulSet specifications and using theWaitForFirstConsumer
volume binding mode in your StorageClass, Portworx ensures that:- Storage is provisioned on the FlashArray/Flashblade that satisfy the topology requirements.
- Applications benefit from reduced latency and better performance.
- Monitoring and performance tuning:
Portworx CSI provides tools to monitor storage performance and adjust configurations, such as region and zone labels, to meet application needs dynamically.