thecodeteam / roadmap

The {code} Team Roadmap
3 stars 1 forks source link

Kubernetes ScaleIO Volume Update (3Q2017) #171

Closed vladimirvivien closed 6 years ago

vladimirvivien commented 7 years ago

The updates for the SacleIO plubin listed below are targeted for a minor releases for 1.7.x which should start couple of weeks after 1.7 major release in July.

Volume Attribute Updates (targets ver 1.7 and 1.8, merged)

Read sdc_guid_id from node labels (target 1.8 release)

See proposal - https://github.com/codedellemc/roadmap/issues/187

Documentation Updates (target 1.8 Release)

kubernetes.github.io website Documentation

Add namespace reference for Secret objects (targets ver 1.8)

Add a new StorageClass parameter to specify the the namespace for secret allowing the ScaleIO StorageClass to reference Secret objects in any namespace.

NOTE This feature was abandoned because the RBAC features of Kubernetes provides better and managed safeguards for Kubernetes Secrets.

cduchesne commented 7 years ago

@vladimirvivien - a few quick notes.

1) We should ignore ReadWriteMany functionality as ScaleIO doesn't have the same characteristics as the other RWM-supporting storage drivers in Kubernetes. You can see the table here: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes. All the RWM-supporting drivers are shared filesystems (NFS-like).

2) There are some defaults we should probably remove from the driver (protection/pool names perhaps). We should also change the documentation that references things named "default"

3) There is a bug when using a StorageClass where our driver accepts a PVC with size 0 and simply fails trying to create a PV on the backend over and over again. We should potentially require size 8 as a minimum or default to 8 if less than 8?

vladimirvivien commented 7 years ago

@cduchesne thanks for the input. As we discussed, I will update the driver to turn on multi-instance by default and turn it off when PVC is set to RWO. I will schedule the other bugs to get fixed.

vladimirvivien commented 7 years ago

Opened PR - https://github.com/kubernetes/kubernetes/pull/48999 to tack volume attribute changes. That PR includes the changes indicated above.

vladimirvivien commented 7 years ago

Updated the roadmap above to break out tasks to indicate which will target k8s 1.7 (minor release) and 1.8 (major release).

vladimirvivien commented 6 years ago

Based on feedback from @cduchesne, consider adjusting default value for PVC.Spec.ReadOnly, when it is not provided in the StorageClass, based on PVC.Spec.AccessMode. If PVC.Spec.ReadOnly is not specified at all, then the following rule should be used to set ReadOnly

vladimirvivien commented 6 years ago

The changes titled Volume Attribute Updates were merged into branch 1.7 via a cherry-pick. This means that the fsGroup bug that was identified earlier will be fixed in 1.7 and 1.8 along with some other changes that were added to that PR.

vladimirvivien commented 6 years ago

Pausing the sdc_guid label feature for now. Please see notes above for reason.

vladimirvivien commented 6 years ago

The following was updated in the ScaleIO plugin code by another contributor to use an API provided method to call out external processes (which we use to call ScaleIO drv_cfg binary). Added here for completeness.

https://github.com/kubernetes/kubernetes/pull/51103

vladimirvivien commented 6 years ago

Please be aware of non-functional enhancements (see below) from the community to let ScaleIO volume plugin support running ScaleIO in containers.

PR with changes - https://github.com/kubernetes/kubernetes/pull/51103

vladimirvivien commented 6 years ago

Previously @cduchesne noticed that Dynamic provisioning was failing after I added the call to retrieve node labels from the volume API. After some research in code and talking to folks on Slack, I got a better understanding of the calling path and the API location that was calling the method VolumeHost.GetNodeLabels().

After some investigation I realized that the call path for initialization of Dynamic Provisioning (ask ScaleIO to create the volume) does not need the SDC GUID ID. So, by simply removing the call in the provisioner seems to have fixed this issue. Further tests are needed.

vladimirvivien commented 6 years ago

Opened PR https://github.com/kubernetes/kubernetes/pull/51722 for teardown fix

vladimirvivien commented 6 years ago

Created PR for documentation - https://github.com/kubernetes/examples/pull/91

vladimirvivien commented 6 years ago

Document PR merged - https://github.com/kubernetes/examples/pull/91