Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion pkg/util/provider/machinecontroller/machine.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,14 @@ func (c *controller) deleteMachine(obj any) {
}
}
c.enqueueMachineTermination(machine, "handling terminating machine object DELETE event")

if c.targetCoreClient != nil {
if nodeName := machine.Labels[v1alpha1.NodeLabelKey]; nodeName != "" {
if err := c.targetCoreClient.CoreV1().Nodes().Delete(context.Background(), nodeName, metav1.DeleteOptions{}); err != nil && !apierrors.IsNotFound(err) {
klog.Errorf("Machine %q: failed to delete node %q: %v", machine.Name, nodeName, err)
}
}
}
}

// getKeyForObj returns key for object, else returns false
Expand Down Expand Up @@ -519,7 +527,7 @@ func (c *controller) triggerCreationFlow(ctx context.Context, createMachineReque
if machine.Status.CurrentStatus.Phase == "" || machine.Status.CurrentStatus.Phase == v1alpha1.MachineCrashLoopBackOff {
clone := clone.DeepCopy()
clone.Status.LastOperation = v1alpha1.LastOperation{
Description: "Creating machine on cloud provider",
Description: "Creating machine on cloud provider. Waiting for node object to register",
State: v1alpha1.MachineStateProcessing,
Type: v1alpha1.MachineOperationCreate,
LastUpdateTime: metav1.Now(),
Expand Down
4 changes: 2 additions & 2 deletions pkg/util/provider/machinecontroller/machine_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -677,7 +677,7 @@ var _ = Describe("machine", func() {
LastUpdateTime: metav1.Now(),
},
LastOperation: v1alpha1.LastOperation{
Description: "Creating machine on cloud provider",
Description: "Creating machine on cloud provider. Waiting for node object to register",
State: v1alpha1.MachineStateProcessing,
Type: v1alpha1.MachineOperationCreate,
LastUpdateTime: metav1.Now(),
Expand Down Expand Up @@ -722,7 +722,7 @@ var _ = Describe("machine", func() {
LastUpdateTime: metav1.Now(),
},
LastOperation: v1alpha1.LastOperation{
Description: "Creating machine on cloud provider",
Description: "Creating machine on cloud provider. Waiting for node object to register",
State: v1alpha1.MachineStateProcessing,
Type: v1alpha1.MachineOperationCreate,
LastUpdateTime: metav1.Now(),
Expand Down
8 changes: 8 additions & 0 deletions pkg/util/provider/machinecontroller/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ func (c *controller) updateNode(oldObj, newObj any) {
// as the update handler will be triggered again due to kubelet updates.
machine, err := c.getMachineFromNode(node.Name)
if err != nil {
if errors.Is(err, errNoMachineMatch) && node.DeletionTimestamp != nil {
c.enqueueNode(node, fmt.Sprintf("handling node UPDATE event. Node %q is being deleted with no backing machine", node.Name))
return
}
klog.Errorf("unable to handle update event for node %q, couldn't fetch associated machine. Error: %v", node.Name, err)
return
}
Expand Down Expand Up @@ -153,6 +157,10 @@ func (c *controller) reconcileClusterNodeKey(key string) error {
machine, err := c.getMachineFromNode(node.Name)
if err != nil {
if errors.Is(err, errNoMachineMatch) {
if node.DeletionTimestamp != nil {
klog.V(2).Infof("ClusterNode %q: Node is being deleted with no backing machine, removing finalizer", key)
return c.removeNodeFinalizers(ctx, node)
}
klog.Errorf("ClusterNode %q: No machine found matching node, skipping adding finalizers", key)
return nil
}
Expand Down
Loading