Skip to main content
Version: 3.1

reference

Summary and Key concepts

Summary:

This article describes the AutopilotRule Custom Resource Definition (CRD) used to automate storage management in Kubernetes environments with Portworx. It explains the key components of an AutopilotRule, including how to select the target objects and namespaces, define conditions that trigger actions, and specify the actions to take (such as resizing volumes or expanding storage pools). The article also details supported actions like resizing PVCs and expanding storage pools, with examples. Additionally, it outlines how to view and monitor Autopilot events to track rule activations and actions taken in real-time.

Kubernetes Concepts:

Portworx Concepts:

  • Autopilot: A Portworx feature that automates storage management tasks such as volume resizing or pool expansion based on pre-defined rules.

  • Volume Resize: An Autopilot action that increases the size of a PVC based on a condition, such as space utilization.

  • Storage Pool Expansion: An Autopilot action to expand the capacity of a Portworx storage pool by adding drives or resizing existing ones.

AutopilotRule CRD specification

FieldDescriptionOptional?Default
selectorSelects the objects affected by this rule using a matchLabels label selector. Syntax.yesempty
namespaceSelectorSelects the namespaces affected by this rule using a matchLabels label selector. Syntax.yesall
conditionsDefines the metrics that need to be for the rule's actions to trigger. All conditions are AND'ed. Syntax.no
actionsDefines what action to take when the conditions are met. Syntax. See Supported Autopilot actions for all actions that you can specify here.no
pollIntervalDefines the interval in seconds at which the conditions for the rule are queried from the metrics provider.yes10 seconds
actionsCoolDownPeriodDefines the duration in seconds for which autopilot will not re-trigger any actions once they have been executed.yes5 minutes

selector

Selects the objects affected by this rule using a matchLabels label selector.

selector:
matchLabels:
<selector-key>: <selector-value>

namespaceSelector

Selects the namespaces affected by this rule using a matchLabels label selector.

namespaceSelector:
matchLabels:
<selector-key>:<selector-value>

conditions

Defines the metrics that need to be for the rule's actions to trigger.

Conditions compare the key field with the values field using the operator field. Condition keys can contain logic and use monitoring values.

conditions:
- key: "<condition-formula>"
operator: <logical-operator>
values:
- "<comparator>"

It follows the below schema.

FieldDescriptionOptional?Default
keyThis is the metrics query that would be sent to the monitoring provider (e.g prometheus).noempty
operatorThis is the logical operator to use to compare the results of the query in key above to the values. Supported operators are:
  • In
  • NotIn
  • Lt
  • Gt
  • LtEq
  • GtEq
  • InRange
  • NotInRange
noempty
valuesThis is the value or list of values against which the key and operator are compared.
  • In, NotIn need a list of values
  • Gt, Lt, GtEq, LtEq need a single numerical value.
  • InRange, NotInRange need exactly 2 numerical values
noempty
note

Multiple conditions are combined using a logical AND.

actions

Defines what action to take when the conditions are met. See the Supported Actions section for the list of actions that you can specify.

action:
name: <operation>
params:
<operation-specific-paramater>: <value>
maxsize: "<value>Gi"

Supported Autopilot actions

openstorage.io.action.volume/resize

This action is to perform resize on Kubernetes PersistentVolumeClaims (PVCs).

Parameters
  • scalepercentage: Specifies the percentage of current PVC size by which Autopilot should resize the PVC. If not specified, the default is 50%.
  • maxsize: Specifies the maximum PVC size in bytes after which Autopilot should stop resizing the PVCs. Note that you can specify the unit of measurement as part of the value. For example, if you want to use GiB, you can specify the unit of measurement like this: maxsize: "400Gi". If not specified, the default value is unlimited.
Examples

Resize the PVC by 100% of current size

  actions:
- name: openstorage.io.action.volume/resize
params:
scalepercentage: "100"
maxsize: "12Gi"

openstorage.io.action.storagepool/expand

This action is to perform expansion on Portworx Storage Pools.

Parameters
  • scalepercentage: Specifies the percentage of current Pool size by which Autopilot should resize it. If not specified, the default is 50%.
  • scaletype: Specifies the type of operation to be performed to expand the pool. Supported values are:
    • auto: Portworx scales the pool automatically by either adding new disks or resizing the existing disks. Autopilot chooses the best method to expand the pool based on the current configuration and available resources.
    • add-drive: Portworx adds new disks to the existing storage pool.
    • resize-drive: Portworx resizes the existing disks in the storage pool.
  • scalesize: Specifies the amount, in Gi or Ti, by which Autopilot should expand a storage pool.
note

You cannot combine the scalepercentage and scalesize parameters; use only one of them in an Autopilot rule.

Examples

Expand the pool by 50% of current size automatically

  actions:
- name: openstorage.io.action.storagepool/expand
params:
scalepercentage: "50"
scaletype: "auto"

Expand the pool by 50% of current size by adding disks

  actions:
- name: openstorage.io.action.storagepool/expand
params:
scalepercentage: "50"
scaletype: "add-drive"

Expand the pool by 100Gi by resizing disks

  actions:
- name: openstorage.io.action.storagepool/expand
params:
scalesize: "100Gi"
scaletype: "resize-drive"

openstorage.io.action.storagepool/rebalance

This action performs a rebalance operation on Portworx Storage Pools.