code: func (c *Cloud) applyUnSchedulableTaint(nodeName types.NodeName, reason string) {
  	node, fetchErr := c.kubeClient.CoreV1().Nodes().Get(string(nodeName), metav1.GetOptions{})
  	if fetchErr != nil {
  		klog.Errorf("Error fetching node %s with %v", nodeName, fetchErr)
  		return
  	}
  
  	taint := &v1.Taint{
  		Key:    nodeWithImpairedVolumes,
  		Value:  "true",
  		Effect: v1.TaintEffectNoSchedule,
  	}
  	err := nodehelpers.AddOrUpdateTaintOnNode(c.kubeClient, string(nodeName), taint)
  	if err != nil {
  		klog.Errorf("Error applying taint to node %s with error %v", nodeName, err)
  		return
  	}
  	c.eventRecorder.Eventf(node, v1.EventTypeWarning, volumeAttachmentStuck, reason)
  }
docs: // applyUnSchedulableTaint applies a unschedulable taint to a node after verifying
  // if node has become unusable because of volumes getting stuck in attaching state.