mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 12:15:52 +00:00
check node existence before shutdown status.
This commit is contained in:
parent
84dfaace5d
commit
78ace24670
@ -147,24 +147,6 @@ func (c *CloudNodeLifecycleController) MonitorNodes() {
|
||||
continue
|
||||
}
|
||||
|
||||
// we need to check this first to get taint working in similar in all cloudproviders
|
||||
// current problem is that shutdown nodes are not working in similar way ie. all cloudproviders
|
||||
// does not delete node from kubernetes cluster when instance it is shutdown see issue #46442
|
||||
shutdown, err := shutdownInCloudProvider(context.TODO(), c.cloud, node)
|
||||
if err != nil {
|
||||
klog.Errorf("error checking if node %s is shutdown: %v", node.Name, err)
|
||||
}
|
||||
|
||||
if shutdown && err == nil {
|
||||
// if node is shutdown add shutdown taint
|
||||
err = controller.AddOrUpdateTaintOnNode(c.kubeClient, node.Name, ShutdownTaint)
|
||||
if err != nil {
|
||||
klog.Errorf("failed to apply shutdown taint to node %s, it may have been deleted.", node.Name)
|
||||
}
|
||||
// Continue checking the remaining nodes since the current one is shutdown.
|
||||
continue
|
||||
}
|
||||
|
||||
// At this point the node has NotReady status, we need to check if the node has been removed
|
||||
// from the cloud provider. If node cannot be found in cloudprovider, then delete the node
|
||||
exists, err := ensureNodeExistsByProviderID(context.TODO(), instances, node)
|
||||
@ -173,26 +155,41 @@ func (c *CloudNodeLifecycleController) MonitorNodes() {
|
||||
continue
|
||||
}
|
||||
|
||||
if exists {
|
||||
// Continue checking the remaining nodes since the current one is fine.
|
||||
continue
|
||||
}
|
||||
if !exists {
|
||||
// Current node does not exist, we should delete it, its taints do not matter anymore
|
||||
|
||||
klog.V(2).Infof("deleting node since it is no longer present in cloud provider: %s", node.Name)
|
||||
klog.V(2).Infof("deleting node since it is no longer present in cloud provider: %s", node.Name)
|
||||
|
||||
ref := &v1.ObjectReference{
|
||||
Kind: "Node",
|
||||
Name: node.Name,
|
||||
UID: types.UID(node.UID),
|
||||
Namespace: "",
|
||||
}
|
||||
ref := &v1.ObjectReference{
|
||||
Kind: "Node",
|
||||
Name: node.Name,
|
||||
UID: types.UID(node.UID),
|
||||
Namespace: "",
|
||||
}
|
||||
|
||||
c.recorder.Eventf(ref, v1.EventTypeNormal,
|
||||
fmt.Sprintf("Deleting node %v because it does not exist in the cloud provider", node.Name),
|
||||
"Node %s event: %s", node.Name, deleteNodeEvent)
|
||||
c.recorder.Eventf(ref, v1.EventTypeNormal,
|
||||
fmt.Sprintf("Deleting node %v because it does not exist in the cloud provider", node.Name),
|
||||
"Node %s event: %s", node.Name, deleteNodeEvent)
|
||||
|
||||
if err := c.kubeClient.CoreV1().Nodes().Delete(context.TODO(), node.Name, metav1.DeleteOptions{}); err != nil {
|
||||
klog.Errorf("unable to delete node %q: %v", node.Name, err)
|
||||
if err := c.kubeClient.CoreV1().Nodes().Delete(context.TODO(), node.Name, metav1.DeleteOptions{}); err != nil {
|
||||
klog.Errorf("unable to delete node %q: %v", node.Name, err)
|
||||
}
|
||||
} else {
|
||||
// Node exists. We need to check this to get taint working in similar in all cloudproviders
|
||||
// current problem is that shutdown nodes are not working in similar way ie. all cloudproviders
|
||||
// does not delete node from kubernetes cluster when instance it is shutdown see issue #46442
|
||||
shutdown, err := shutdownInCloudProvider(context.TODO(), c.cloud, node)
|
||||
if err != nil {
|
||||
klog.Errorf("error checking if node %s is shutdown: %v", node.Name, err)
|
||||
}
|
||||
|
||||
if shutdown && err == nil {
|
||||
// if node is shutdown add shutdown taint
|
||||
err = controller.AddOrUpdateTaintOnNode(c.kubeClient, node.Name, ShutdownTaint)
|
||||
if err != nil {
|
||||
klog.Errorf("failed to apply shutdown taint to node %s, it may have been deleted.", node.Name)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user