mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Merge pull request #72507 from dixudx/remove_stale_OutOfDisk
remove stale OutOfDisk condition from kubelet side
This commit is contained in:
		@@ -528,6 +528,7 @@ func (kl *Kubelet) defaultNodeStatusFuncs() []func(*v1.Node) error {
 | 
				
			|||||||
		nodestatus.PIDPressureCondition(kl.clock.Now, kl.evictionManager.IsUnderPIDPressure, kl.recordNodeStatusEvent),
 | 
							nodestatus.PIDPressureCondition(kl.clock.Now, kl.evictionManager.IsUnderPIDPressure, kl.recordNodeStatusEvent),
 | 
				
			||||||
		nodestatus.ReadyCondition(kl.clock.Now, kl.runtimeState.runtimeErrors, kl.runtimeState.networkErrors, validateHostFunc, kl.containerManager.Status, kl.recordNodeStatusEvent),
 | 
							nodestatus.ReadyCondition(kl.clock.Now, kl.runtimeState.runtimeErrors, kl.runtimeState.networkErrors, validateHostFunc, kl.containerManager.Status, kl.recordNodeStatusEvent),
 | 
				
			||||||
		nodestatus.VolumesInUse(kl.volumeManager.ReconcilerStatesHasBeenSynced, kl.volumeManager.GetVolumesInUse),
 | 
							nodestatus.VolumesInUse(kl.volumeManager.ReconcilerStatesHasBeenSynced, kl.volumeManager.GetVolumesInUse),
 | 
				
			||||||
 | 
							nodestatus.RemoveOutOfDiskCondition(),
 | 
				
			||||||
		// TODO(mtaufen): I decided not to move this setter for now, since all it does is send an event
 | 
							// TODO(mtaufen): I decided not to move this setter for now, since all it does is send an event
 | 
				
			||||||
		// and record state back to the Kubelet runtime object. In the future, I'd like to isolate
 | 
							// and record state back to the Kubelet runtime object. In the future, I'd like to isolate
 | 
				
			||||||
		// these side-effects by decoupling the decisions to send events and partial status recording
 | 
							// these side-effects by decoupling the decisions to send events and partial status recording
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -746,3 +746,18 @@ func VolumeLimits(volumePluginListFunc func() []volume.VolumePluginWithAttachLim
 | 
				
			|||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RemoveOutOfDiskCondition removes stale OutOfDisk condition
 | 
				
			||||||
 | 
					// OutOfDisk condition has been removed from kubelet in 1.12
 | 
				
			||||||
 | 
					func RemoveOutOfDiskCondition() Setter {
 | 
				
			||||||
 | 
						return func(node *v1.Node) error {
 | 
				
			||||||
 | 
							var conditions []v1.NodeCondition
 | 
				
			||||||
 | 
							for i := range node.Status.Conditions {
 | 
				
			||||||
 | 
								if node.Status.Conditions[i].Type != v1.NodeOutOfDisk {
 | 
				
			||||||
 | 
									conditions = append(conditions, node.Status.Conditions[i])
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							node.Status.Conditions = conditions
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1508,6 +1508,54 @@ func TestVolumeLimits(t *testing.T) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestRemoveOutOfDiskCondition(t *testing.T) {
 | 
				
			||||||
 | 
						now := time.Now()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var cases = []struct {
 | 
				
			||||||
 | 
							desc       string
 | 
				
			||||||
 | 
							inputNode  *v1.Node
 | 
				
			||||||
 | 
							expectNode *v1.Node
 | 
				
			||||||
 | 
						}{
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								desc: "should remove stale OutOfDiskCondition from node status",
 | 
				
			||||||
 | 
								inputNode: &v1.Node{
 | 
				
			||||||
 | 
									Status: v1.NodeStatus{
 | 
				
			||||||
 | 
										Conditions: []v1.NodeCondition{
 | 
				
			||||||
 | 
											*makeMemoryPressureCondition(false, now, now),
 | 
				
			||||||
 | 
											{
 | 
				
			||||||
 | 
												Type:   v1.NodeOutOfDisk,
 | 
				
			||||||
 | 
												Status: v1.ConditionFalse,
 | 
				
			||||||
 | 
											},
 | 
				
			||||||
 | 
											*makeDiskPressureCondition(false, now, now),
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								expectNode: &v1.Node{
 | 
				
			||||||
 | 
									Status: v1.NodeStatus{
 | 
				
			||||||
 | 
										Conditions: []v1.NodeCondition{
 | 
				
			||||||
 | 
											*makeMemoryPressureCondition(false, now, now),
 | 
				
			||||||
 | 
											*makeDiskPressureCondition(false, now, now),
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, tc := range cases {
 | 
				
			||||||
 | 
							t.Run(tc.desc, func(t *testing.T) {
 | 
				
			||||||
 | 
								// construct setter
 | 
				
			||||||
 | 
								setter := RemoveOutOfDiskCondition()
 | 
				
			||||||
 | 
								// call setter on node
 | 
				
			||||||
 | 
								if err := setter(tc.inputNode); err != nil {
 | 
				
			||||||
 | 
									t.Fatalf("unexpected error: %v", err)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								// check expected node
 | 
				
			||||||
 | 
								assert.True(t, apiequality.Semantic.DeepEqual(tc.expectNode, tc.inputNode),
 | 
				
			||||||
 | 
									"Diff: %s", diff.ObjectDiff(tc.expectNode, tc.inputNode))
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Test Helpers:
 | 
					// Test Helpers:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// sortableNodeAddress is a type for sorting []v1.NodeAddress
 | 
					// sortableNodeAddress is a type for sorting []v1.NodeAddress
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user