Skip to main content

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:

  1. Node labeling with topology information:
    Kubernetes nodes can be labeled with attributes like region, zone, and rack. These labels guide PX CSI driver to provision storage on a FlashArray/Flashblade that aligns with the application's location.
  2. 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.
  3. Dynamic node affinity and volume binding modes:
    By defining node affinity in pod or StatefulSet specifications and using the WaitForFirstConsumer 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.
  4. 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.