Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kubernetes ScaleIO Volume Update (3Q2017) #171

Closed
18 tasks done
vladimirvivien opened this issue Jun 16, 2017 · 13 comments
Closed
18 tasks done

Kubernetes ScaleIO Volume Update (3Q2017) #171

vladimirvivien opened this issue Jun 16, 2017 · 13 comments
Assignees
Labels

Comments

@vladimirvivien
Copy link

vladimirvivien commented Jun 16, 2017

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 - #187

Documentation Updates (target 1.8 Release)

  • Review doc for inconsistencies and uniformity with API changes
  • Document new requirement to provide storage pool, protection domain, and volume Size
  • Document node label scaleio.SdcGuid to specify ScaleIO node GUID
  • PR Created - ScaleIO - documentation update  kubernetes/examples#91 (merged)

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
Copy link

cduchesne commented Jun 29, 2017

@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
Copy link
Author

@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
Copy link
Author

Opened PR - kubernetes/kubernetes#48999 to tack volume attribute changes. That PR includes the changes indicated above.

@vladimirvivien vladimirvivien changed the title Kubernetes ScaleIO Volume Update (for k8s 1.8) Kubernetes ScaleIO Volume Update (for k8s 1.7.x) Jul 19, 2017
@vladimirvivien vladimirvivien changed the title Kubernetes ScaleIO Volume Update (for k8s 1.7.x) Kubernetes ScaleIO Volume Update (3Q2017) Jul 19, 2017
@vladimirvivien
Copy link
Author

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

@vladimirvivien
Copy link
Author

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

  • If AccessMode = ReadOnlyMany => PVC.Spec.ReadOnly = true
  • if AccessMode = ReadWriteOnce => PVC.Spec.ReadOnly = false

@vladimirvivien
Copy link
Author

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.

@clintkitson clintkitson added Epic and removed Epic labels Aug 22, 2017
@vladimirvivien
Copy link
Author

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

@vladimirvivien
Copy link
Author

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.

kubernetes/kubernetes#51103

@vladimirvivien
Copy link
Author

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 - kubernetes/kubernetes#51103

@vladimirvivien
Copy link
Author

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
Copy link
Author

Opened PR kubernetes/kubernetes#51722 for teardown fix

@vladimirvivien
Copy link
Author

Created PR for documentation - kubernetes/examples#91

@vladimirvivien
Copy link
Author

Document PR merged - kubernetes/examples#91

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants