Migration from csi-lvm to csi-driver-lvm
The migration from the deprecated csi-lvm to the new csi-driver-lvm must be performed in multiple steps. In here we assume you are currently using the gardener-extension-provider-metal.
- Add the the
csi-driver-lvmextension to the shoot spec. - Disable
csi-lvmingardener-extension-provider-metalby settingfeatureGates.disableCsiLvmtotrue. This allows thecsi-driver-lvmto be installed. - Wait until the shoot has been successfully reconciled.
- Make sure the
csi-driver-lvmhas been installed and that thecsi-lvmstorage class has been created. - Make sure to roll all nodes. Otherwise volumes will stop working after the next restart of a machine.
Issues
Why is the Drop-in replacement not possible?
Deploying the new csi-driver-lvm with the same provisioner-name as the old one is not possible, as it causes errors when using k8s sidecar images for controllers.
The provisioner name contains "/", which causes problems with node registrar directories (metal-stack.io/csi-lvm):
I1015 08:09:23.292306 1 node_register.go:53] Starting Registration Server at: /registration/metal-stack.io/csi-lvm-reg.sock
E1015 08:09:23.292482 1 node_register.go:56] failed to listen on socket: /registration/metal-stack.io/csi-lvm-reg.sock with error: listen unix /registration/metal-stack.io/csi-lvm-reg.sock: bind: no such file or directory
This problem requires a more complex migration.
Manual migration
The migration solution so far has been tested manually:
- create old controller & provisioner
- create pvcs & pod
- write files to volumes
- delete old controller & provisioner
- install new controller & provisioner with helm
- add additional storage class with name
csi-lvmand type linear- mimics old storage class
- default storage class (not supported yet -> see default storage class of
gardener-extension-provider-metal)
- create new pvcs
- create new pod with old and new pvcs and test