-
Notifications
You must be signed in to change notification settings - Fork 40k
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
Reintroduce CSI 0.3.x support in CSI Volume Plugin #71314
Conversation
e0621db
to
9845a9e
Compare
9845a9e
to
87515c9
Compare
/milestone v1.13 |
/assign |
I suggest also adding e2e tests using the old drivers in 1.13 |
/test pull-kubernetes-integration |
klog.V(2).Infof("Got Plugin %s at endpoint %s with versions %v", pluginName, endpoint, versions) | ||
|
||
if foundInDeprecatedDir { | ||
return fmt.Errorf("device plugin socket was found in a directory that is no longer supported") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why fail with device plugins?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Per #70494 (comment) the plugin directory is changing, and the old one will be deprecated. That PR moved all consumers (CSI and device plugin to the new dir). This PR makes an exception for CSI 0.x but does not change anything else (meaning device plugin and CSI 1.x drivers are still required to use the new dir).
/approve |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: saad-ali, vishh The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/test pull-kubernetes-integration |
Hostpath CSI tests run as part of pull CI and are green. I manually ran GCE PD CSI tests, and they are all green:
Next I'm adding e2e tests using the old drivers in 1.13. |
klog.V(2).Infof("Got Plugin %s at endpoint %s with versions %v", pluginName, endpoint, versions) | ||
|
||
if foundInDeprecatedDir { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm unfamiliar with this code, but is this completely separate from the storage driver code, and just implements the same PluginHandler interface?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is the same plugin watcher used to feed events to both CSI and device manager PluginHandler impls? if so, doesn't the plugin dir change in 1.13 affect device plugins as well? what stage are device plugins at, and how many releases do we need to honor them in the v1.12 location?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this completely separate from the storage driver code, and just implements the same PluginHandler interface?
Correct.
is the same plugin watcher used to feed events to both CSI and device manager PluginHandler impls?
Yes.
if so, doesn't the plugin dir change in 1.13 affect device plugins as well?
Yes, it does. Per the discussions #70494 (comment) the owners of device plugin code @vishh @jiayingz are ok with the change.
what stage are device plugins at, and how many releases do we need to honor them in the v1.12 location?
@vishh @jiayingz can probably answer this better then I can.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Device plugins haven't yet adopted the switch to using plugin watcher yet and we believe the risk very very low to make the switch to the new directory format.
However, given that this PR is supporting old plugin watcher implementation anyways for CSI, it might make sense to support for device plugins too just for the sake of consistency.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok cool. I'll go ahead and remove the failure in this case then.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
However, given that this PR is supporting old plugin watcher implementation anyways for CSI, it might make sense to support for device plugins too just for the sake of consistency.
I agree with that, thanks. Make sure the deprecation of the old dir is prominently announced for both device plugins and csi plugins in 1.13 release notes.
Thanks for finding a way to DTRT |
/test pull-kubernetes-e2e-gce |
Add E2E test to verify CSI 0.x. The tests are passing. Unless there is any other feedback. This PR is ready to go. |
test/e2e/testing-manifests/storage-csi/hostpath/hostpath/csi-hostpathplugin.yaml
Show resolved
Hide resolved
csi volume plugin and e2es LGTM |
a6161e4
to
9669b36
Compare
Modify kubelet plugin watcher to support older CSI drivers that use an the old plugins directory for socket registration. Also modify CSI plugin registration to support multiple versions of CSI registering with the same name.
Remove csipb dependency from everywhere except the CSI client in preperation for supporting multiple CSI clients.
Modify the CSI volume plugin to handle CSI version 0.x as well as 1.x
9669b36
to
a7c5582
Compare
/lgtm |
set release note to NONE, will need to fold in updates in the 1.13 release notes manually, along with a revision of the release note in #71020 |
What type of PR is this?
What this PR does / why we need it:
PR #71020 removed support for CSI 0.x while adding support for CSI 1.x. This PR reintroduces support for CSI 0.x, so that Kubernetes can continue to support older CSI drivers.
/sig storage
Which issue(s) this PR fixes (optional, in
fixes #<issue number>(, fixes #<issue_number>, ...)
format, will close the issue(s) when PR gets merged):Fixes #71228
Special notes for your reviewer:
Does this PR introduce a user-facing change?: