Unsolved

1 Rookie

 • 

6 Posts

 • 

21 Points

72

June 2nd, 2026 07:45

[Qualification]: Support Confirmation for sci-unity version 2.15.0 on Kubernetes v1.32.9+rke2r1

  • OS: RHEL 8.10

  • Orchestrator: RKE2 v1.32.9+rke2r1

  • Storage Platform: EMC Unity 480F

  • Attachments: How to upload files?

  • Additional details: both kubernetes e2e and csi-cert have been ran

Documented Test Exclusions & Configurations

Due to our specific infrastructure requirements and known driver bugs, several standard cert-csi tests have been explicitly disabled:

  1. Volume Cloning & Snapshots (clone: falsesnapshot: false):

    • Reason: Skipped due to our strict company policy requiring Thick Provisioning (thinProvisioned: "false"). Dell Unity's CSI Volume Cloning and Snapshot capabilities fundamentally require underlying array-level snapshots, which mandate Thin Provisioning. Testing thick clones will always result in array-level rejection.

  2. NFS Suites:

    • Reason: Skipped (the nfs-storage block was removed from the config). Our environment exclusively uses Fibre Channel (FC). Leaving the default NFS template in the configuration will cause the EphemeralVolumeSuite to time out and fail.

  3. Raw Block Expansion (Potential Issue):

    • Reason: While standard filesystem expansion is supported, expanding Raw Block volumes may fail with a NodeResizeError. This is an OS-integration bug where the Dell Unity CSI Node Plugin attempts to execute multipathd resize map using the raw WWN, but fails to prepend the required NAA 3 prefix that RHEL expects.

References for Excluded Raw Block Tests:
The multipathd resize map failure during raw block expansion is caused by the CSI Node Plugin omitting the SCSI NAA designator prefix (3) from the Unity WWN.

  • Dell Host Connectivity Guide: Acknowledges that RHEL identifies Unity LUNs with the 3 prepended to the WWN (See: Dell Unity XT Linux Setup).

  • RHEL/Linux Storage Standards: Documents that scsi_id prepends the 3 to comply with the NAA designator type in VPD page 0x83 (See: Persistent Identifiers for Storage).

1 Rookie

 • 

6 Posts

 • 

21 Points

June 2nd, 2026 15:13

i'm not able to add any comment there, it immediately gives Access Denied after i press post and refresh the page...

also, why i can't upload zip archives here?

1 Rookie

 • 

2 Posts

 • 

8 Points

June 5th, 2026 12:55

Hello
For comments and zip archieves not working- sorry I don't know what the issue is there. 
For the test results: michpg-cert-csi-kubernetes-e2e-report.xml.zip
Were the fsgroup tests ran? When we run k8s e2e , we set

# Volume ownership via fsGroup
 fsGroup: true

#iwork4Dell

1 Rookie

 • 

6 Posts

 • 

21 Points

June 5th, 2026 13:51

hello,

we used the following config:

```

DriverInfo:
  Name: csi-unity.dellemc.com
  # Define the filesystems you support
  SupportedFsType:
    ext4: {}
    xfs: {}
  # Explicitly enable advanced tests to match cert-csi
  Capabilities:
    block: true            # Enables Raw Block tests
    exec: true             # Allows the framework to execute commands in pods to verify data
    multipath: true        # Enables multiple pod attachment tests (if RWX)
    pvcDataSource: false   # Enables Volume Cloning tests
    volumeExpansion: true  # Enables Volume Resizing tests
  
  # (Optional) Enable stress/scaling tests similar to cert-csi "scaling" suite
  StressTestOptions:
    NumPods: 10
    NumRestarts: 1StorageClass:
  FromExistingClassName: unity-ext4
SnapshotClass:
  FromName: true 
```

1 Rookie

 • 

2 Posts

 • 

8 Points

June 5th, 2026 14:16

Can you try with 

fsGroup: true

Under Capabilities? 


#iwork4Dell

1 Rookie

 • 

6 Posts

 • 

21 Points

June 5th, 2026 14:31

sure, where i can send results after test gets completed?

Moderator

 • 

11 Posts

 • 

8 Points

June 5th, 2026 15:07

@vb_playtech  - Thanks for the response. Cindy will reach-out to you via email. 

#IWork4Dell

7 Practitioner

 • 

2 Posts

 • 

6 Points

June 8th, 2026 17:01

@vb_playtech can you select option {;} and load the content of log file as html/xml?

#IWork4Dell

1 Rookie

 • 

6 Posts

 • 

21 Points

June 9th, 2026 07:10

@AlikSaring​ unfortunately no, after pressing post and refresh the page, got access denied

Moderator

 • 

11 Posts

 • 

8 Points

June 9th, 2026 16:48

@vb_playtech - Can you please give a try? You should able to upload the test results now.

1 Rookie

 • 

6 Posts

 • 

21 Points

June 10th, 2026 12:23

[root@k8s-master-01 bin]# ./e2e.test \
  -ginkgo.v \
  -ginkgo.focus="External.Storage.*(provisioning|snapshots|volume-expand|block vol|stress)" \
  -storage.testdriver=unity-driver.yaml \
  -allowed-not-ready-nodes=7 \
  -ginkgo.junit-report=k8s-cert-report.xml
  I0605 14:20:07.568015 1802882 external.go:189] Driver loaded from path [unity-driver.yaml]: &{DriverInfo:{Name:csi-unity.dellemc.com InTreePluginName: TestTags:[] MaxFileSize:0 SupportedSizeRange:{Max: Min:5Gi} SupportedFsType:map[:{} ext4:{} xfs:{}] SupportedMountOption:map[] RequiredMountOption:map[] Capabilities:map[block:true exec:true fsGroup:true multipath:true pvcDataSource:false volumeExpansion:true] RequiredAccessModes:[] TopologyKeys:[] NumAllowedTopologies:0 StressTestOptions:0xc000189490 VolumeSnapshotStressTestOptions:<nil> PerformanceTestOptions:<nil>} StorageClass:{FromName:false FromFile: FromExistingClassName:unity-ext4} VolumeAttributesClass:{FromName:false FromFile: FromExistingClassName:} SnapshotClass:{FromName:true FromFile: FromExistingClassName:} InlineVolumes:[] ClientNodeName: Timeouts:map[]}
  I0605 14:20:08.086466 1802882 test_context.go:564] The --provider flag is not set. Continuing as if --provider=skeleton had been used.
  I0605 14:20:08.086570 1802882 e2e.go:109] Starting e2e run "711cecd8-051f-4282-9738-41a3332215b1" on Ginkgo node 1
Running Suite: Kubernetes e2e suite - /home/user/kubernetes/test/bin
========================================================================
Random Seed: 1780669207 - will randomize all specs

Will run 81 of 6922 specs
------------------------------
[ReportBeforeSuite]
k8s.io/kubernetes/test/e2e/e2e_test.go:154
[ReportBeforeSuite] PASSED [0.000 seconds]
------------------------------
[SynchronizedBeforeSuite]
k8s.io/kubernetes/test/e2e/e2e.go:69
  I0605 14:20:08.286891 1802882 util.go:502] >>> kubeConfig: /etc/rancher/rke2/rke2.yaml
  I0605 14:20:08.287902 1802882 helper.go:51] Waiting up to 30m0s for all (but 7) nodes to be schedulable
  I0605 14:20:08.297504 1802882 wait.go:274] Unschedulable nodes= 4, maximum value for starting tests= 7
  I0605 14:20:08.297579 1802882 wait.go:276] 	-> Node worker-01.example.com [[[ Ready=true, Network(available)=true, Taints=[{maintenance true NoExecute <nil>}], NonblockingTaints=node-role.kubernetes.io/control-plane ]]]
  I0605 14:20:08.297603 1802882 wait.go:276] 	-> Node k8s-master-01.example.com [[[ Ready=true, Network(available)=true, Taints=[{node-role.kubernetes.io/control-plane  NoSchedule <nil>} {node-role.kubernetes.io/etcd  NoExecute <nil>}], NonblockingTaints=node-role.kubernetes.io/control-plane ]]]
  I0605 14:20:08.297624 1802882 wait.go:276] 	-> Node k8s-master-02.example.com [[[ Ready=true, Network(available)=true, Taints=[{node-role.kubernetes.io/control-plane  NoSchedule <nil>} {node-role.kubernetes.io/etcd  NoExecute <nil>}], NonblockingTaints=node-role.kubernetes.io/control-plane ]]]
  I0605 14:20:08.297645 1802882 wait.go:276] 	-> Node k8s-master-03.example.com [[[ Ready=true, Network(available)=true, Taints=[{node-role.kubernetes.io/control-plane  NoSchedule <nil>} {node-role.kubernetes.io/etcd  NoExecute <nil>}], NonblockingTaints=node-role.kubernetes.io/control-plane ]]]
  I0605 14:20:08.321805 1802882 e2e.go:142] Waiting up to 5m0s for all daemonsets in namespace 'kube-system' to start
  I0605 14:20:08.325688 1802882 e2e.go:245] e2e test version: v1.32.9
  I0605 14:20:08.326430 1802882 e2e.go:254] kube-apiserver version: v1.32.9+rke2r1
  I0605 14:20:08.326502 1802882 util.go:502] >>> kubeConfig: /etc/rancher/rke2/rke2.yaml
  I0605 14:20:08.328639 1802882 e2e.go:383] Cluster IP family: ipv4
[SynchronizedBeforeSuite] PASSED [0.042 seconds]
------------------------------
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
------------------------------
External Storage [Driver: csi-unity.dellemc.com] [Testpattern: Dynamic PV (block volmode)] multiVolume [Slow] should access to two volumes with different volume mode and retain data across pod recreation on different node [Slow]
k8s.io/kubernetes/test/e2e/storage/testsuites/multivolume.go:247
  STEP: Creating a kubernetes client @ 06/05/26 14:20:08.447
  I0605 14:20:08.447936 1802882 util.go:502] >>> kubeConfig: /etc/rancher/rke2/rke2.yaml
  STEP: Building a namespace api object, basename multivolume @ 06/05/26 14:20:08.448
  STEP: Waiting for a default service account to be provisioned in namespace @ 06/05/26 14:20:08.477
  STEP: Waiting for kube-root-ca.crt to be provisioned in namespace @ 06/05/26 14:20:08.48
  I0605 14:20:08.487079 1802882 volume_resource.go:96] Creating resource for dynamic PV
  I0605 14:20:08.487195 1802882 volume_resource.go:102] Using claimSize:5Gi, test suite supported size:{ 1Mi}, driver(csi-unity.dellemc.com) supported size:{ 1Mi}
  STEP: creating a StorageClass multivolume-2710-e2e-sc8789t @ 06/05/26 14:20:08.49
  STEP: creating a claim @ 06/05/26 14:20:08.496
  I0605 14:20:08.502393 1802882 pv.go:790] Waiting up to timeout=5m0s for PersistentVolumeClaims [csi-unity.dellemc.comcjrzr] to have phase Bound
  I0605 14:20:08.506090 1802882 pv.go:806] PersistentVolumeClaim csi-unity.dellemc.comcjrzr found but phase is Pending instead of Bound.
  I0605 14:20:10.509319 1802882 pv.go:806] PersistentVolumeClaim csi-unity.dellemc.comcjrzr found but phase is Pending instead of Bound.
  I0605 14:20:12.513174 1802882 pv.go:806] PersistentVolumeClaim csi-unity.dellemc.comcjrzr found but phase is Pending instead of Bound.
  I0605 14:20:14.516971 1802882 pv.go:801] PersistentVolumeClaim csi-unity.dellemc.comcjrzr found and phase=Bound (6.014474294s)
  I0605 14:20:14.521482 1802882 volume_resource.go:96] Creating resource for dynamic PV
  I0605 14:20:14.521537 1802882 volume_resource.go:102] Using claimSize:5Gi, test suite supported size:{ 1Mi}, driver(csi-unity.dellemc.com) supported size:{ 1Mi}
  STEP: creating a StorageClass multivolume-2710-e2e-scffbqg @ 06/05/26 14:20:14.523
  STEP: creating a claim @ 06/05/26 14:20:14.526
  I0605 14:20:14.531593 1802882 pv.go:790] Waiting up to timeout=5m0s for PersistentVolumeClaims [csi-unity.dellemc.comqmxbz] to have phase Bound
  I0605 14:20:14.533902 1802882 pv.go:806] PersistentVolumeClaim csi-unity.dellemc.comqmxbz found but phase is Pending instead of Bound.
  I0605 14:20:16.536595 1802882 pv.go:806] PersistentVolumeClaim csi-unity.dellemc.comqmxbz found but phase is Pending instead of Bound.
  I0605 14:20:18.539588 1802882 pv.go:806] PersistentVolumeClaim csi-unity.dellemc.comqmxbz found but phase is Pending instead of Bound.
  I0605 14:20:20.542887 1802882 pv.go:801] PersistentVolumeClaim csi-unity.dellemc.comqmxbz found and phase=Bound (6.011232357s)
  STEP: Creating pod on {Name: Selector:map[kubernetes.io/os:linux] Affinity:nil} with multiple volumes @ 06/05/26 14:20:20.546
  STEP: Checking if the volume1 exists as expected volume mode (Block) @ 06/05/26 14:20:37.208
  I0605 14:20:37.208978 1802882 exec_util.go:59] ExecWithOptions {Command:[/bin/sh -c test -b /mnt/volume1] Namespace:multivolume-2710 PodName:pod-3f3bf9d3-ae2d-4895-b42a-78db45ec22f8 ContainerName:write-pod Stdin:<nil> CaptureStdout:true CaptureStderr:true PreserveWhitespace:false Quiet:false}
  I0605 14:20:37.209083 1802882 exec_util.go:64] ExecWithOptions: Clientset creation
  I0605 14:20:37.209275 1802882 exec_util.go:80] ExecWithOptions: execute(POST https://127.0.0.1:6443/api/v1/namespaces/multivolume-2710/pods/pod-3f3bf9d3-ae2d-4895-b42a-78db45ec22f8/exec?command=%2Fbin%2Fsh&command=-c&command=test+-b+%2Fmnt%2Fvolume1&container=write-pod&stderr=true&stdout=true)
  I0605 14:20:37.371982 1802882 exec_util.go:59] ExecWithOptions {Command:[/bin/sh -c test -d /mnt/volume1] Namespace:multivolume-2710 PodName:pod-3f3bf9d3-ae2d-4895-b42a-78db45ec22f8 ContainerName:write-pod Stdin:<nil> CaptureStdout:true CaptureStderr:true PreserveWhitespace:false Quiet:false}
  I0605 14:20:37.372021 1802882 exec_util.go:64] ExecWithOptions: Clientset creation
  I0605 14:20:37.372077 1802882 exec_util.go:80] ExecWithOptions: execute(POST https://127.0.0.1:6443/api/v1/namespaces/multivolume-2710/pods/pod-3f3bf9d3-ae2d-4895-b42a-78db45ec22f8/exec?command=%2Fbin%2Fsh&command=-c&command=test+-d+%2Fmnt%2Fvolume1&container=write-pod&stderr=true&stdout=true)
  STEP: Checking if write to the volume1 works properly @ 06/05/26 14:20:37.543
  I0605 14:20:37.543357 1802882 exec_util.go:59] ExecWithOptions {Command:[/bin/sh -c echo dn+KqypAIq8859YNEbYyhXOR9jIrtxrAiZ1M4vV75nnD/kFwGP9GD+0Cu1ilJnYO679Za70Cms3WdjFVQsdZJA== | base64 -d | sha256sum] Namespace:multivolume-2710 PodName:pod-3f3bf9d3-ae2d-4895-b42a-78db45ec22f8 ContainerName:write-pod Stdin:<nil> CaptureStdout:true CaptureStderr:true PreserveWhitespace:false Quiet:false}
  I0605 14:20:37.543410 1802882 exec_util.go:64] ExecWithOptions: Clientset creation
  I0605 14:20:37.543503 1802882 exec_util.go:80] ExecWithOptions: execute(POST https://127.0.0.1:6443/api/v1/namespaces/multivolume-2710/pods/pod-3f3bf9d3-ae2d-4895-b42a-78db45ec22f8/exec?command=%2Fbin%2Fsh&command=-c&command=echo+dn%2BKqypAIq8859YNEbYyhXOR9jIrtxrAiZ1M4vV75nnD%2FkFwGP9GD%2B0Cu1ilJnYO679Za70Cms3WdjFVQsdZJA%3D%3D+%7C+base64+-d+%7C+sha256sum&container=write-pod&stderr=true&stdout=true)
  I0605 14:20:37.683828 1802882 exec_util.go:59] ExecWithOptions {Command:[/bin/sh -c echo dn+KqypAIq8859YNEbYyhXOR9jIrtxrAiZ1M4vV75nnD/kFwGP9GD+0Cu1ilJnYO679Za70Cms3WdjFVQsdZJA== | base64 -d | dd of=/mnt/volume1  bs=64 count=1] Namespace:multivolume-2710 PodName:pod-3f3bf9d3-ae2d-4895-b42a-78db45ec22f8 ContainerName:write-pod Stdin:<nil> CaptureStdout:true CaptureStderr:true PreserveWhitespace:false Quiet:false}
  I0605 14:20:37.683901 1802882 exec_util.go:64] ExecWithOptions: Clientset creation
No Events found!

Top