Trident: Feature storage pools in Storage Class definition doesn't work

Created on 4 Sep 2018  路  2Comments  路  Source: NetApp/trident

We use trident with OCP (OpenShift Container Platform) 3.9.

# oc version
oc v3.9.30
kubernetes v1.9.1+a0ce1bc657
features: Basic-Auth GSSAPI Kerberos SPNEGO

Server https://console.<DOMAIN>:8443
openshift v3.9.30
kubernetes v1.9.1+a0ce1bc657

We did the update to trident version 18.07 to get the benefits of #118 .

# ~/trident-installer/tridentctl version -n trident
+----------------+----------------+
| SERVER VERSION | CLIENT VERSION |
+----------------+----------------+
| 18.07.0        | 18.07.0        |
+----------------+----------------+

The setup doesn麓t work as documented.

We would like to use multiple backends with multiple storageclasses, so that the customer can decide between storageclasses and these storageclasses point to an explicit backend.

The reason for an explicit backend is for individual prefix which must be include for the storage quality.

We created the storageclass with the following yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: trident-basic-sq1-nobackup
provisioner: netapp.io/trident
parameters:
  backendType: "ontap-nas"
  storagePools: "ontapnas_bsc_sq1_no_backup_fm03v09dl04.<DOMAIN>:*"

When we define the parameter storagePools in the storageclass YAML with "ontapnas_bsc_sq1_no_backup_fm03v09dl04.<DOMAIN>:*" and then try to create a PVC , then we get the following error.

oc describe pvc vol00001
Name:          vol00001
Namespace:     mktest
StorageClass:  trident-basic-sq1-nobackup
Status:        Pending
Volume:
Labels:        <none>
Annotations:   volume.beta.kubernetes.io/storage-provisioner=netapp.io/trident
Finalizers:    []
Capacity:
Access Modes:
Events:
  Type    Reason                Age              From                         Message
  ----    ------                ----             ----                         -------
  Normal  ProvisioningFailed    1m               netapp.io/trident            no available backends for storage class trident-basic-sq1-nobackup
  Normal  ExternalProvisioning  1m (x2 over 1m)  persistentvolume-controller  waiting for a volume to be created, either by external provisioner "netapp.io/trident" or manually created by system administrator

The setup works when we remove the :* in the storagePools parameter.

With the adopted YAML are all backends with the type ontap-nas assigned to all storageclasses which uses this backendType.

In this case using different storageclasses and backends makes no sense, because all backends are used round robin when a PVC is created.

Due to this fact it look to us that the parameter storagePools is ignored.

Here some more data about our setup.

# ~/trident-installer/tridentctl get backend -n trident
+------------------------------------------------+-------------------+--------+---------+
|                            NAME                 |  STORAGE DRIVER   | ONLINE | VOLUMES |
+------------------------------------------------+-------------------+--------+---------+
| ontapnas_fm03v09dl04.<DOMAIN>                   | ontap-nas         | true   |       0 |
| ontapnaseco_fm03v09dl04.<DOMAIN>                | ontap-nas-economy | true   |       2 |
| ontapnas_bsc_sq1_no_backup_fm03v09dl04.<DOMAIN> | ontap-nas         | true   |       0 |
| ontapnas_eco_sq1_backup_fm03v09dl04.<DOMAIN>    | ontap-nas-economy | true   |       0 |
+------------------------------------------------+-------------------+--------+---------+
# oc get sc
NAME                         PROVISIONER            AGE
standard (default)           kubernetes.io/cinder   42d
trident-basic                netapp.io/trident      19d
trident-basic-sq1-nobackup   netapp.io/trident      31m
trident-eco-sq1-backup       netapp.io/trident      1h
trident-economy              netapp.io/trident      19d



md5-f832801108417638feb2ce039cc29fe6



# ~/trident-installer/tridentctl get backend -n trident ontapnas_bsc_sq1_no_backup_fm03v09dl04.<DOMAIN> -o yaml
items:
- config:
    serialNumbers: []
    storageDriverName: ontap-nas
    storagePrefix: trident_sq1_nas_nfs
    version: 1
  name: ontapnas_bsc_sq1_no_backup_fm03v09dl04.<DOMAIN>
  online: true
  storage:
    fm03n01_sq1_aggr02:
      name: fm03n01_sq1_aggr02
      storageAttributes:
        backendType:
          offer:
          - ontap-nas
        clones:
          offer: true
        encryption:
          offer: true
        media:
          offer:
          - ssd
        provisioningType:
          offer:
          - thick
          - thin
        snapshots:
          offer: true
      storageClasses:
      - trident-basic
    fm03n02_sq1_aggr02:
      name: fm03n02_sq1_aggr02
      storageAttributes:
        backendType:
          offer:
          - ontap-nas
        clones:
          offer: true
        encryption:
          offer: true
        media:
          offer:
          - ssd
        provisioningType:
          offer:
          - thick
          - thin
        snapshots:
          offer: true
      storageClasses:
      - trident-basic
  volumes: []
help wanted

Most helpful comment

Hi,

sorry for the delay, i didn麓t had to chance to test yesterday.

You麓re right :.* (with a dot) works!
I created 6 PVC and all of them used the selected backend.

All 2 comments

Hi,

That field is a regex (regular expression) and not a fileglob.

Can you please try this and see if it works for you?
:.* (with a dot) instead of
:* (without a dot)

Hi,

sorry for the delay, i didn麓t had to chance to test yesterday.

You麓re right :.* (with a dot) works!
I created 6 PVC and all of them used the selected backend.

Was this page helpful?
0 / 5 - 0 ratings