You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- The CSI handler [tries to determine which instance is newer](https://github.com/kubernetes/kubernetes/blob/7140b4910c6c1179c9778a7f3bb8037356febd58/pkg/volume/csi/csi_plugin.go#L115-L125) based on the supported version(s) and
75
+
only remembers that one. If that newest instance fails, there is no fallback.
76
+
77
+
In practice, most CSI drivers probably all pass [the hard-coded "1.0.0"](https://github.com/kubernetes-csi/node-driver-registrar/blob/27700e2962cd35b9f2336a156146181e5c75399e/cmd/csi-node-driver-registrar/main.go#L72)
78
+
from the csi-node-registrar as supported version, so this version
79
+
selection mechanism isn't used at all.
80
+
81
+
- The DRA handler only remembers the most recently registered instance.
82
+
83
+
### Deployment
84
+
85
+
Deploying a plugin with support for seamless upgrades and per-instance socket
86
+
filenames is *not* compatible with a kubelet version that does not have support
87
+
for seamless upgrades yet. It breaks like this:
88
+
89
+
- New instance starts, gets registered and replaces the old one.
90
+
- Old instance stops, removing its socket.
91
+
- The kubelet notices that, unregisters the plugin.
92
+
- The plugin handler removes *the new* instance because it ignores the socket path -> no instance left.
93
+
94
+
Plugin authors either have to assume that the cluster has a recent enough
95
+
kubelet or rely on labeling nodes with support. Then the plugin can use one
96
+
simple DaemonSet for nodes without support and another, more complex one where
97
+
`maxSurge` is increased to enable seamless upgrades on nodes which support it.
0 commit comments