VolumePlacementStrategy CRD reference


Portworx provides a CustomResouceDefinition (CRD) called VolumePlacementStrategy. The specification for this CRD is composed of 4 main sections:

replicaAffinity

Schema
Field Description Optional? Default
enforcement Specifies if the given rule is required (hard) or preferred (soft). Portworx will fail volume creation if it cannot provision volumes matching a rule with hard enforcement enabled. Yes required
matchExpressions matchExpressions is a list of label selector requirements. The requirements are ANDed.

The labels provided here are matched against the following:
  • Kubernetes node labels
  • PVC labels
  • Portworx storage pool labels
Yes *

* required if topologyKey is empty
empty
topologyKey Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node.

NOTE: Using topologyKey requires nodes to be consistently labelled, i.e. every node in the cluster must have an appropriate label matching topologyKey. If some or all nodes are missing the specified topologyKey label, it can lead to unintended behavior.
Yes*

* required if matchExpressions is empty
empty
weight Specifies the weight of the rule. If more than one rule matches, then the rule with the highest weight is applied. Yes 0
Example use cases

By default, Portworx automatically adds the following labels to each of its storage pools. These can be used for replica affinity rules to target replicas on a specific storage pool type:

  • iopriority
  • medium

replicaAntiAffinity

Schema
Field Description Optional? Default
topologyKey Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node. Using topologyKey requires nodes to be consistently labelled, i.e. every node in the cluster must have an appropriate label matching topologyKey. If some or all nodes are missing the specified topologyKey label, it can lead to unintended behavior. Yes* * required if matchExpressions is empty empty
Example use cases

volumeAffinity

Schema
Field Description Optional? Default
enforcement Specifies if the given rule is required (hard) or preferred (soft) Portworx will fail volume creation if it cannot provision volumes matching a rule with hard enforcement enabled. Yes required
topologyKey Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node.
Using topologyKey requires nodes to be consistently labelled, i.e. every node in the cluster must have an appropriate label matching topologyKey. If some or all nodes are missing the specified topologyKey label, it can lead to unintended behavior.
Yes empty
matchExpressions matchExpressions is a list of label selector requirements. The requirements are ANDed.

The labels provided here are matched against the following:
  • Kubernetes node labels
  • PVC labels
  • Portworx
  • storage pool labels
No empty
weight Specifies the weight of the rule. If more than one rule matches, then the rule with the highest weight is applied. Yes 0
Example use cases

volumeAntiAffinity

Schema
Field Description Optional? Default
enforcement Specifies if the given rule is required (hard) or preferred (soft). Portworx will fail volume creation if it cannot provision volumes matching a rule with hard enforcement enabled. Yes required
topologyKey Key for the node label that the system uses to denote a topology domain. The key can be for any node label that is present on the Kubernetes node.
Using topologyKey requires nodes to be consistently labelled, i.e. every node in the cluster must have an appropriate label matching topologyKey. If some or all nodes are missing the specified topologyKey label, it can lead to unintended behavior.
Yes empty
matchExpressions matchExpressions is a list of label selector requirements. The requirements are ANDed.

The labels provided here are matched against the following:
  • Kubernetes node labels
  • PVC labels
  • Portworx
  • storage pool labels
No empty
Example use cases


Last edited: Monday, Aug 3, 2020