diff --git a/metropolis/node/kubernetes/csi.go b/metropolis/node/kubernetes/csi.go
index 4893254..d180b86 100644
--- a/metropolis/node/kubernetes/csi.go
+++ b/metropolis/node/kubernetes/csi.go
@@ -56,11 +56,13 @@
 func (s *csiPluginServer) Run(ctx context.Context) error {
 	s.logger = supervisor.Logger(ctx)
 
+	// Try to remove socket if an unclean shutdown happened.
+	os.Remove(s.KubeletDirectory.Plugins.VFS.FullPath())
+
 	pluginListener, err := net.ListenUnix("unix", &net.UnixAddr{Name: s.KubeletDirectory.Plugins.VFS.FullPath(), Net: "unix"})
 	if err != nil {
 		return fmt.Errorf("failed to listen on CSI socket: %w", err)
 	}
-	pluginListener.SetUnlinkOnClose(true)
 
 	pluginServer := grpc.NewServer()
 	csi.RegisterIdentityServer(pluginServer, s)
@@ -71,11 +73,13 @@
 		return err
 	}
 
+	// Try to remove socket if an unclean shutdown happened
+	os.Remove(s.KubeletDirectory.PluginsRegistry.VFSReg.FullPath())
+
 	registrationListener, err := net.ListenUnix("unix", &net.UnixAddr{Name: s.KubeletDirectory.PluginsRegistry.VFSReg.FullPath(), Net: "unix"})
 	if err != nil {
 		return fmt.Errorf("failed to listen on CSI registration socket: %w", err)
 	}
-	registrationListener.SetUnlinkOnClose(true)
 
 	registrationServer := grpc.NewServer()
 	pluginregistration.RegisterRegistrationServer(registrationServer, s)
diff --git a/metropolis/node/kubernetes/plugins/kvmdevice/kvmdevice.go b/metropolis/node/kubernetes/plugins/kvmdevice/kvmdevice.go
index c9a6a79..a6d4657 100644
--- a/metropolis/node/kubernetes/plugins/kvmdevice/kvmdevice.go
+++ b/metropolis/node/kubernetes/plugins/kvmdevice/kvmdevice.go
@@ -162,11 +162,13 @@
 		return fmt.Errorf("failed to create KVM device node: %v", err)
 	}
 
+	// Try to remove socket if an unclean shutdown happened
+	os.Remove(k.KubeletDirectory.Plugins.KVM.FullPath())
+
 	pluginListener, err := net.ListenUnix("unix", &net.UnixAddr{Name: k.KubeletDirectory.Plugins.KVM.FullPath(), Net: "unix"})
 	if err != nil {
 		return fmt.Errorf("failed to listen on device plugin socket: %w", err)
 	}
-	pluginListener.SetUnlinkOnClose(true)
 
 	pluginServer := grpc.NewServer()
 	deviceplugin.RegisterDevicePluginServer(pluginServer, k)
@@ -174,11 +176,13 @@
 		return err
 	}
 
+	// Try to remove socket if an unclean shutdown happened
+	os.Remove(k.KubeletDirectory.PluginsRegistry.KVMReg.FullPath())
+
 	registrationListener, err := net.ListenUnix("unix", &net.UnixAddr{Name: k.KubeletDirectory.PluginsRegistry.KVMReg.FullPath(), Net: "unix"})
 	if err != nil {
 		return fmt.Errorf("failed to listen on registration socket: %w", err)
 	}
-	registrationListener.SetUnlinkOnClose(true)
 
 	registrationServer := grpc.NewServer()
 	pluginregistration.RegisterRegistrationServer(registrationServer, k)
