mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 05:27:21 +00:00
Merge pull request #72507 from dixudx/remove_stale_OutOfDisk
remove stale OutOfDisk condition from kubelet side
This commit is contained in:
commit
cb09d4d317
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user