oc get node <node name> (1)
This feature allows Container Storage Interface (CSI) drivers to automatically detach volumes when a node goes down non-gracefully.
A graceful node shutdown occurs when the kubelet’s node shutdown manager detects the upcoming node shutdown action. Non-graceful shutdowns occur when the kubelet does not detect a node shutdown action, which can occur because of system or hardware failures. Also, the kubelet may not detect a node shutdown action when the shutdown command does not trigger the Inhibitor Locks mechanism used by the kubelet on Linux, or because of a user error, for example, if the shutdownGracePeriod and shutdownGracePeriodCriticalPods details are not configured correctly for that node.
With this feature, when a non-graceful node shutdown occurs, you can manually add an out-of-service
taint on the node to allow volumes to automatically detach from the node.
Access to the cluster with cluster-admin privileges.
To allow volumes to detach automatically from a node after a non-graceful node shutdown:
After a node is detected as unhealthy, shut down the worker node.
Ensure that the node is shutdown by running the following command and checking the status:
oc get node <node name> (1)
1 | <node name> = name of the non-gracefully shutdown node |
If the node is not completely shut down, do not proceed with tainting the node. If the node is still up and the taint is applied, filesystem corruption can occur. |
Taint the corresponding node object by running the following command:
oc adm taint node <node name> node.kubernetes.io/out-of-service=nodeshutdown:NoExecute (1)
1 | <node name> = name of the non-gracefully shutdown node |
After the taint is applied, the volumes detach from the shutdown node allowing their disks to be attached to a different node.
The resulting YAML file resembles the following:
spec:
taints:
- effect: NoExecute
key: node.kubernetes.io/out-of-service
value: nodeshutdown
Restart the node.
Remove the taint.