The module lifecycle stage: Preview

The module has requirements for installation

The module is only guaranteed to work if the system requirements are met. As for any other configurations, the module may work, but its smooth operation is not guaranteed.

Deckhouse Platform installs CRDs but does not remove them when a module is disabled. If you no longer need the created CRDs, delete them.

ReplicatedStorageClass

Short names: rsc

Scope: Cluster
Version: v1alpha1

ReplicatedStorageClass is the interface for managing StorageClasses of the replicated.csi.storage.deckhouse.io CSI driver. Creating a StorageClass for this driver manually is prohibited.
  • apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  • kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  • metadata
    object
  • spec
    object

    Defines a Kubernetes Storage class configuration.

    In the LINSTOR control-plane the spec cannot be changed after creation: changes to most fields are rejected, and changes to replication or reclaimPolicy switch the resource to the InvalidConfiguration phase and leave its StorageClass unchanged. In the new control-plane most fields are immutable after creation as well, but the replication settings (replication, failuresToTolerate, guaranteedMinimumDataRedundancy), configurationRolloutStrategy, eligibleNodesConflictResolutionStrategy and reclaimPolicy (the StorageClass is recreated with the new policy) can be changed on an existing resource.

    • spec.configurationRolloutStrategy
      object

      Only meaningful with the new control-plane.

      ConfigurationRolloutStrategy defines how configuration changes are applied to existing volumes. When not specified, the controller fills the default (RollingUpdate, maxParallel=5).

      • spec.configurationRolloutStrategy.rollingUpdate
        object
        RollingUpdate configures parameters for RollingUpdate strategy. Required when type is RollingUpdate.
        • spec.configurationRolloutStrategy.rollingUpdate.maxParallel
          integer

          Required value

          MaxParallel is the maximum number of volumes being rolled out simultaneously.

          Default: 5

          Allowed values: 1 <= X <= 200

      • spec.configurationRolloutStrategy.type
        string

        Required value

        Type specifies the rollout strategy type.

        Allowed values: RollingUpdate, NewVolumesOnly

    • spec.eligibleNodesConflictResolutionStrategy
      object

      Only meaningful with the new control-plane.

      EligibleNodesConflictResolutionStrategy defines how the controller handles volumes with eligible nodes conflicts. When not specified, the controller fills the default (RollingRepair, maxParallel=5).

      • spec.eligibleNodesConflictResolutionStrategy.rollingRepair
        object
        RollingRepair configures parameters for RollingRepair conflict resolution strategy. Required when type is RollingRepair.
        • spec.eligibleNodesConflictResolutionStrategy.rollingRepair.maxParallel
          integer

          Required value

          MaxParallel is the maximum number of volumes being repaired simultaneously.

          Default: 5

          Allowed values: 1 <= X <= 200

      • spec.eligibleNodesConflictResolutionStrategy.type
        string

        Required value

        Type specifies the conflict resolution strategy type.

        Allowed values: Manual, RollingRepair

    • spec.eligibleNodesPolicy
      object

      Only meaningful with the new control-plane.

      EligibleNodesPolicy defines policies for managing eligible nodes. When not specified, the controller fills the default (notReadyGracePeriod=10m).

      • spec.eligibleNodesPolicy.notReadyGracePeriod
        string

        Required value

        NotReadyGracePeriod specifies how long to wait before removing a not-ready node from the eligible nodes list.

        Default: 10m

    • spec.failuresToTolerate
      integer

      Only meaningful with the new control-plane.

      FailuresToTolerate (FTT) specifies how many arbitrary node failures the volume can tolerate while remaining available for IO. Mutually exclusive with Replication. Must be specified together with GuaranteedMinimumDataRedundancy. Valid range: 0-1: the datamesh has layouts above FTT=1/GMDR=1 (4D, 4D+1TB, 5D), but they are not tested in DRBD, so admission is limited to the layouts the LINSTOR control-plane shipped (None, Availability, ConsistencyAndAvailability) plus Consistency. Valid combinations: |FTT - GMDR| <= 1.

      Allowed values: 0 <= X <= 1

    • spec.guaranteedMinimumDataRedundancy
      integer

      Only meaningful with the new control-plane.

      GuaranteedMinimumDataRedundancy (GMDR) specifies the minimum number of additional data copies maintained while the volume is serving IO. GMDR=0 means the system may operate with a single data copy in degraded mode (like a RAID-1 mirror after one disk failure). GMDR=1 means at least 2 copies are always maintained during IO. Mutually exclusive with Replication. Must be specified together with FailuresToTolerate. Valid range: 0-1: layouts above FTT=1/GMDR=1 are not tested in DRBD and are not admitted (see failuresToTolerate). Valid combinations: |FTT - GMDR| <= 1.

      Allowed values: 0 <= X <= 1

    • spec.nodeLabelSelector
      object

      Only meaningful with the new control-plane.

      NodeLabelSelector filters nodes eligible for DRBD participation. Only nodes matching this selector can store data, provide access, or host tiebreaker. If not specified, all nodes are candidates.

      • spec.nodeLabelSelector.matchExpressions
        array of objects
        matchExpressions is a list of label selector requirements. The requirements are ANDed.
        • spec.nodeLabelSelector.matchExpressions.key
          string
          key is the label key that the selector applies to.
        • spec.nodeLabelSelector.matchExpressions.operator
          string
          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
        • spec.nodeLabelSelector.matchExpressions.values
          array of strings
          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
      • spec.nodeLabelSelector.matchLabels
        object
        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.
    • spec.reclaimPolicy
      string

      Required value

      The reclaim policy of the StorageClass. Might be:

      • Delete (if the PersistentVolumeClaim is deleted, the PersistentVolume is deleted with it)
      • Retain (if the PersistentVolumeClaim is deleted, the PersistentVolume stays intact in the Released phase)

      Changing the field is not supported in the LINSTOR control-plane: the resource switches to the InvalidConfiguration phase. In the new control-plane the StorageClass is recreated with the new policy.

      Allowed values: Delete, Retain

    • spec.replication
      string

      Deprecated: in the new control-plane, use failuresToTolerate and guaranteedMinimumDataRedundancy instead; the field is mutually exclusive with them.

      The Storage class’s replication mode. Might be:

      • None — replication is disabled; the data exists in a single copy.
      • Availability — the volume stays readable and writable even if one of its replicas becomes unavailable. The data is stored in two copies on different nodes. Important: this mode does not guarantee data consistency and may lead to split brain and data loss if the network connectivity between nodes is disrupted. Recommended only for non-critical data and applications that do not require high reliability and data integrity.
      • Consistency — 2 replicas with consistency guarantees; requires both replicas for IO. Supported only in the new control-plane.
      • ConsistencyAndAvailability — the volume stays readable and writable even if one of its replicas becomes unavailable. The data is stored in three copies on different nodes. This mode protects against data loss when two nodes holding volume replicas fail and guarantees data consistency. However, if two replicas are lost, the volume switches to suspend-io mode.

      Mapping to failuresToTolerate/guaranteedMinimumDataRedundancy (in the new control-plane): None → failuresToTolerate=0, guaranteedMinimumDataRedundancy=0 Availability → failuresToTolerate=1, guaranteedMinimumDataRedundancy=0 Consistency → failuresToTolerate=0, guaranteedMinimumDataRedundancy=1 ConsistencyAndAvailability → failuresToTolerate=1, guaranteedMinimumDataRedundancy=1

      Both in the new control-plane and in the LINSTOR control-plane an unset value is treated as ‘ConsistencyAndAvailability’; setting the field explicitly is recommended.

      Allowed values: None, Availability, Consistency, ConsistencyAndAvailability

    • spec.storage
      object

      Only meaningful with the new control-plane.

      Storage defines the storage backend configuration for this storage class. Specifies the type of volumes (LVM or LVMThin) and which LVMVolumeGroups will be used to allocate space for volumes.

      • spec.storage.lvmVolumeGroups
        array of objects

        Required value

        LVMVolumeGroups is an array of LVMVolumeGroup resource names whose Volume Groups/Thin-pools will be used to allocate the required space.

        Note that every LVMVolumeGroup resource must have the same type (Thin/Thick) as specified in the Type field.

        • spec.storage.lvmVolumeGroups.name
          string
          Selected LVMVolumeGroup resource’s name.

          Minimum length: 1

          Pattern: ^[a-z0-9]([a-z0-9-.]{0,251}[a-z0-9])?$

        • spec.storage.lvmVolumeGroups.thinPoolName
          string
          The name of the selected Thin-pool within the LVMVolumeGroup. Required if the ReplicatedStoragePool type is LVMThin.

          Length: 1..128

          Pattern: ^[a-zA-Z0-9][a-zA-Z0-9_.+-]*$

      • spec.storage.type
        string

        Required value

        Type defines the volumes type. Might be:

        • LVM (for Thick)
        • LVMThin (for Thin)

        Allowed values: LVM, LVMThin

    • spec.storagePool
      string

      Deprecated: in the new control-plane, use storage instead.

      The name of the ReplicatedStoragePool resource, which is the Storage Pool in the LINSTOR backend the volumes are created in. Required in the LINSTOR control-plane.

      The field cannot be added or changed after creation; removing it is possible only in the new control-plane.

    • spec.systemNetworkNames
      array of strings

      Only meaningful with the new control-plane.

      SystemNetworkNames specifies network names used for DRBD replication traffic. At least one network name must be specified. Each name is limited to 64 characters.

    • spec.topology
      string

      Required value

      The topology settings for the volumes in the created Storage class. Might be:

      • TransZonal — replicas of the volumes will be created in different zones (one replica per zone). To use this topology, the available zones must be specified in the ‘zones’ param, and the cluster nodes must have the topology.kubernetes.io/zone= label.
      • Zonal — all replicas of the volumes are created in the same zone that the scheduler selected to place the pod using this volume. Recommended when the latency between zones is high and/or the bandwidth is low.
      • Ignored — the topology information will not be used to place replicas of the volumes. The replicas can be placed on any available nodes, with the restriction: no more than one replica of a given volume on one node. Required when replication is ‘None’.

      Note that the ‘Ignored’ value can be used only if there are no zones in the cluster (there are no nodes with the topology.kubernetes.io/zone label). In the LINSTOR control-plane ‘Zonal’ and ‘TransZonal’ can be used only if there are zones in the cluster.

      For the system to operate correctly, either every cluster node must be labeled with ’topology.kubernetes.io/zone’, or none of them should have this label.

      The field is immutable after creation.

      Allowed values: TransZonal, Zonal, Ignored

    • spec.volumeAccess
      string

      The volume access mode. Might be:

      • Local — pods cannot be created on nodes that have no local replica of the volume used by the pod.
      • EventuallyLocal — the volume is created right after the pod appears and is assigned a node. The pod’s topology settings are taken into account on initial creation, and a local replica is created on the pod’s node where possible. If the pod is created on a node without a local replica, it is attached to the existing replicas over the network, and after 30 minutes a local replica starts being created on that node, which copies all volume data over the network from the other replicas.
      • PreferablyLocal — the same as EventuallyLocal, except that a pod created on a node without a local replica stays attached to the replicas over the network permanently (no local replica is created on that node).
      • Any — the volume is created before the pod appears and can be placed on any available node regardless of the topology settings of the pod that will use it. A pod created on a node without a local replica stays attached to the replicas over the network permanently.

      Note that the default Volume Access mode is ‘PreferablyLocal’.

      With EventuallyLocal, PreferablyLocal and Any, access to the data over the network is allowed only within one zone: a pod cannot be created in a zone that has no replica of the volume.

      The field is immutable after creation.

      Default: PreferablyLocal

      Allowed values: Local, EventuallyLocal, PreferablyLocal, Any

    • spec.zones
      array of strings

      The list of zones the StorageClass’s volumes are replicated in. The controller puts a label with the StorageClass’s name on the nodes where replicas of the volumes can be created.

      Required with the TransZonal topology; the number of zones must be exactly one of the values below, depending on the redundancy settings:

      • failuresToTolerate=0, guaranteedMinimumDataRedundancy=1 (replication ‘Consistency’): exactly 2 zones
      • failuresToTolerate=1, guaranteedMinimumDataRedundancy=0 (replication ‘Availability’): exactly 3 zones
      • failuresToTolerate=1, guaranteedMinimumDataRedundancy=1 (replication ‘ConsistencyAndAvailability’, the default): exactly 3 zones In the LINSTOR control-plane the field can be set only with the TransZonal topology; with ‘Availability’ and ‘ConsistencyAndAvailability’ replication exactly 3 zones must be specified. The ‘Consistency’ replication is not supported there. In the new control-plane, with ‘None’ replication the zones limit where the single replica can be placed. The field is immutable after creation.
      • spec.zones.Element of the array
        string

        Maximum length: 63

  • status
    object
    Displays current information about the Storage Class.
    • status.conditions
      array of objects
      • status.conditions.lastTransitionTime
        string
        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
      • status.conditions.message
        string
        message is a human readable message indicating details about the transition. This may be an empty string.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        status of the condition, one of True, False, Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        type of condition in CamelCase or in foo.example.com/CamelCase.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.configuration
      object
      Configuration is the resolved configuration that volumes should align to.
      • status.configuration.failuresToTolerate
        integer

        Required value

        FailuresToTolerate is the resolved FTT value. Admission caps it at 1: the datamesh has layouts above FTT=1/GMDR=1, but they are not tested in DRBD (see api/v1alpha1/rsc_types.go).

        Allowed values: 0 <= X <= 1

      • status.configuration.guaranteedMinimumDataRedundancy
        integer

        Required value

        GuaranteedMinimumDataRedundancy is the resolved GMDR value. Admission caps it at 1 (see failuresToTolerate).

        Allowed values: 0 <= X <= 1

      • status.configuration.replicatedStoragePoolName
        string

        Required value

        ReplicatedStoragePoolName is the name of the ReplicatedStoragePool resource.

        Minimum length: 1

      • status.configuration.topology
        string

        Required value

        Topology is the resolved topology setting.

        Allowed values: TransZonal, Zonal, Ignored

      • status.configuration.volumeAccess
        string

        Required value

        VolumeAccess is the resolved volume access mode.

        Allowed values: Local, EventuallyLocal, PreferablyLocal, Any

    • status.configurationGeneration
      integer
      ConfigurationGeneration is the RSC generation when configuration was accepted.
    • status.message
      string
      Message is a human-readable description of the current phase.
    • status.phase
      string
      Phase is the operational state summary of the storage class.

      Allowed values: Ready, WaitingForStoragePool, InsufficientNodes, InvalidConfiguration, RollingOut, PartiallyAligned, Terminating

    • status.storagePoolBasedOnGeneration
      integer
      StoragePoolBasedOnGeneration is the RSC generation when storagePoolName was computed.
    • status.storagePoolEligibleNodesRevision
      integer
      StoragePoolEligibleNodesRevision tracks RSP’s eligibleNodesRevision for change detection.
    • status.storagePoolName
      string
      StoragePoolName is the computed name of the ReplicatedStoragePool for this RSC. Format: auto-rsp-<fnv128-hex>. Multiple RSCs with identical storage parameters will share the same StoragePoolName.
    • status.volumes
      object

      Required value

      Volumes provides aggregated volume statistics. Always present (may have total=0).

      Default: {}

      • status.volumes.aligned
        integer
        Aligned is the number of volumes whose configuration matches the storage class.
      • status.volumes.inConflictWithEligibleNodes
        integer
        InConflictWithEligibleNodes is the number of volumes with replicas on non-eligible nodes.
      • status.volumes.pendingObservation
        integer
        PendingObservation is the number of volumes that haven’t observed current RSC configuration or eligible nodes.
      • status.volumes.staleConfiguration
        integer
        StaleConfiguration is the number of volumes with outdated configuration.
      • status.volumes.total
        integer
        Total is the total number of volumes.
      • status.volumes.usedStoragePoolNames
        array of strings
        UsedStoragePoolNames is a sorted list of storage pool names currently used by volumes.

ReplicatedStoragePool

Short names: rsp

Scope: Cluster
Version: v1alpha1

ReplicatedStoragePool is a Kubernetes Custom Resource that defines a configuration for Linstor Storage-pools.
  • apiVersion
    string
    APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  • kind
    string
    Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  • metadata
    object
  • spec
    object
    Defines desired rules for Linstor’s Storage-pools.
    • spec.eligibleNodesPolicy
      object

      Required value

      Only meaningful with the new control-plane.

      EligibleNodesPolicy defines policies for managing eligible nodes. Always present with defaults.

      Default: { "notReadyGracePeriod": "10m" }

      • spec.eligibleNodesPolicy.notReadyGracePeriod
        string

        Required value

        NotReadyGracePeriod specifies how long to wait before removing a not-ready node from the eligible nodes list.

        Default: 10m

    • spec.lvmVolumeGroups
      array of objects

      Required value

      The list of LVMVolumeGroup resources whose Volume Groups/Thin-pools are used to create Storage Pools in the LINSTOR backend.

      Note that every LVMVolumeGroup resource must have the same type (Thin/Thick) as specified in the ‘spec.type’ field.

      The field is immutable after creation; to add LVMVolumeGroups, recreate the resource.

      • spec.lvmVolumeGroups.name
        string
        Selected LVMVolumeGroup resource’s name.

        Minimum length: 1

        Pattern: ^[a-z0-9]([a-z0-9-.]{0,251}[a-z0-9])?$

      • spec.lvmVolumeGroups.thinPoolName
        string
        The name of the selected Thin-pool within the LVMVolumeGroup. Required if the ReplicatedStoragePool type is LVMThin.

        Length: 1..128

        Pattern: ^[a-zA-Z0-9][a-zA-Z0-9_.+-]*$

    • spec.nodeLabelSelector
      object

      Only meaningful with the new control-plane.

      NodeLabelSelector filters nodes eligible for storage pool participation. Only nodes matching this selector can store data. If not specified, all nodes with matching LVMVolumeGroups are candidates.

      • spec.nodeLabelSelector.matchExpressions
        array of objects
        matchExpressions is a list of label selector requirements. The requirements are ANDed.
        • spec.nodeLabelSelector.matchExpressions.key
          string
          key is the label key that the selector applies to.
        • spec.nodeLabelSelector.matchExpressions.operator
          string
          operator represents a key’s relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
        • spec.nodeLabelSelector.matchExpressions.values
          array of strings
          values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
      • spec.nodeLabelSelector.matchLabels
        object
        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed.
    • spec.systemNetworkNames
      array of strings

      Required value

      Only meaningful with the new control-plane.

      SystemNetworkNames specifies network names used for DRBD replication traffic. At least one network name must be specified. Each name is limited to 64 characters.

      Default: [ "Internal" ]

    • spec.type
      string

      Required value

      Defines the volumes type. Might be:

      • LVM (for Thick)
      • LVMThin (for Thin)

      Allowed values: LVM, LVMThin

    • spec.zones
      array of strings

      Only meaningful with the new control-plane.

      Array of zones the Storage pool’s volumes should be replicated in.

      • spec.zones.Element of the array
        string

        Maximum length: 63

  • status
    object
    Displays current information about the state of the LINSTOR storage pool.
    • status.conditions
      array of objects
      • status.conditions.lastTransitionTime
        string
        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
      • status.conditions.message
        string
        message is a human readable message indicating details about the transition. This may be an empty string.

        Maximum length: 32768

      • status.conditions.observedGeneration
        integer
        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Allowed values: 0 <= X

      • status.conditions.reason
        string
        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Length: 1..1024

        Pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        string
        status of the condition, one of True, False, Unknown.

        Allowed values: True, False, Unknown

      • status.conditions.type
        string
        type of condition in CamelCase or in foo.example.com/CamelCase.

        Maximum length: 316

        Pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.eligibleNodes
      array of objects
      EligibleNodes lists nodes eligible for this storage pool.
      • status.eligibleNodes.agentReady
        boolean
        AgentReady indicates whether the sds-replicated-volume agent on this node is ready.
      • status.eligibleNodes.lvmVolumeGroups
        array of objects
        LVMVolumeGroups lists LVM volume groups available on this node.
        • status.eligibleNodes.lvmVolumeGroups.name
          string
          Name is the LVMVolumeGroup resource name.

          Maximum length: 253

        • status.eligibleNodes.lvmVolumeGroups.ready
          boolean
          Ready indicates whether the LVMVolumeGroup (and its thin pool, if applicable) is ready.
        • status.eligibleNodes.lvmVolumeGroups.thinPoolName
          string
          ThinPoolName is the thin pool name (for LVMThin storage pools).

          Maximum length: 128

        • status.eligibleNodes.lvmVolumeGroups.unschedulable
          boolean
          Unschedulable indicates whether new volumes should not use this volume group.
      • status.eligibleNodes.nodeName
        string
        NodeName is the Kubernetes node name.

        Maximum length: 253

      • status.eligibleNodes.nodeReady
        boolean
        NodeReady indicates whether the Kubernetes node is ready.
      • status.eligibleNodes.unschedulable
        boolean
        Unschedulable indicates whether new volumes should not be scheduled to this node.
      • status.eligibleNodes.zoneName
        string
        ZoneName is the zone this node belongs to.

        Maximum length: 63

    • status.eligibleNodesRevision
      integer
      EligibleNodesRevision is incremented when eligible nodes change.
    • status.message
      string
      Message is a human-readable description of the current phase. Mirrors the Ready condition message.
    • status.phase
      string
      Phase is the operational state summary of the storage pool.

      Allowed values: Ready, WaitingForLVMVolumeGroups, InvalidConfiguration

    • status.usedBy
      object
      UsedBy tracks which resources are using this storage pool.
      • status.usedBy.replicatedStorageClassNames
        array of strings
        ReplicatedStorageClassNames lists RSC names using this storage pool.
        • status.usedBy.replicatedStorageClassNames.Element of the array
          string

          Maximum length: 253