diff --git a/cmd/kubeadm/app/phases/markmaster/markmaster_test.go b/cmd/kubeadm/app/phases/markmaster/markmaster_test.go index 02dda93a06b..71380d7df76 100644 --- a/cmd/kubeadm/app/phases/markmaster/markmaster_test.go +++ b/cmd/kubeadm/app/phases/markmaster/markmaster_test.go @@ -49,7 +49,7 @@ func TestMarkMaster(t *testing.T) { "master label and taint missing", "", nil, - "{\"metadata\":{\"labels\":{\"node-role.kubernetes.io/master\":\"\"}},\"spec\":{\"taints\":[{\"effect\":\"NoSchedule\",\"key\":\"node-role.kubernetes.io/master\",\"timeAdded\":null}]}}", + "{\"metadata\":{\"labels\":{\"node-role.kubernetes.io/master\":\"\"}},\"spec\":{\"taints\":[{\"effect\":\"NoSchedule\",\"key\":\"node-role.kubernetes.io/master\"}]}}", }, { "master label missing", @@ -61,7 +61,7 @@ func TestMarkMaster(t *testing.T) { "master taint missing", kubeadmconstants.LabelNodeRoleMaster, nil, - "{\"spec\":{\"taints\":[{\"effect\":\"NoSchedule\",\"key\":\"node-role.kubernetes.io/master\",\"timeAdded\":null}]}}", + "{\"spec\":{\"taints\":[{\"effect\":\"NoSchedule\",\"key\":\"node-role.kubernetes.io/master\"}]}}", }, { "nothing missing", diff --git a/pkg/api/types.go b/pkg/api/types.go index 2c54fcf71fb..398bbf2179e 100644 --- a/pkg/api/types.go +++ b/pkg/api/types.go @@ -2229,7 +2229,7 @@ type Taint struct { // TimeAdded represents the time at which the taint was added. // It is only written for NoExecute taints. // +optional - TimeAdded metav1.Time + TimeAdded *metav1.Time } type TaintEffect string diff --git a/pkg/controller/daemon/daemon_controller_test.go b/pkg/controller/daemon/daemon_controller_test.go index d5d4786173a..5a64914cf7c 100644 --- a/pkg/controller/daemon/daemon_controller_test.go +++ b/pkg/controller/daemon/daemon_controller_test.go @@ -63,17 +63,22 @@ var ( noExecuteTaints = []v1.Taint{{Key: "dedicated", Value: "user1", Effect: "NoExecute"}} ) +func nowPointer() *metav1.Time { + now := metav1.Now() + return &now +} + var ( nodeNotReady = []v1.Taint{{ Key: algorithm.TaintNodeNotReady, Effect: v1.TaintEffectNoExecute, - TimeAdded: metav1.Now(), + TimeAdded: nowPointer(), }} nodeUnreachable = []v1.Taint{{ Key: algorithm.TaintNodeUnreachable, Effect: v1.TaintEffectNoExecute, - TimeAdded: metav1.Now(), + TimeAdded: nowPointer(), }} ) diff --git a/pkg/controller/node/scheduler/taint_controller_test.go b/pkg/controller/node/scheduler/taint_controller_test.go index 1e6a0e2d5b4..7e3fad26c93 100644 --- a/pkg/controller/node/scheduler/taint_controller_test.go +++ b/pkg/controller/node/scheduler/taint_controller_test.go @@ -33,11 +33,12 @@ import ( var timeForControllerToProgress = 500 * time.Millisecond func createNoExecuteTaint(index int) v1.Taint { + now := metav1.Now() return v1.Taint{ Key: "testTaint" + fmt.Sprintf("%v", index), Value: "test" + fmt.Sprintf("%v", index), Effect: v1.TaintEffectNoExecute, - TimeAdded: metav1.Now(), + TimeAdded: &now, } } diff --git a/pkg/controller/node/util/controller_utils.go b/pkg/controller/node/util/controller_utils.go index 75d39f12465..6a860f4de9f 100644 --- a/pkg/controller/node/util/controller_utils.go +++ b/pkg/controller/node/util/controller_utils.go @@ -256,7 +256,8 @@ func RecordNodeStatusChange(recorder record.EventRecorder, node *v1.Node, newSta // otherwise. func SwapNodeControllerTaint(kubeClient clientset.Interface, taintsToAdd, taintsToRemove []*v1.Taint, node *v1.Node) bool { for _, taintToAdd := range taintsToAdd { - taintToAdd.TimeAdded = metav1.Now() + now := metav1.Now() + taintToAdd.TimeAdded = &now } err := controller.AddOrUpdateTaintOnNode(kubeClient, node.Name, taintsToAdd...) diff --git a/staging/src/k8s.io/api/core/v1/types.go b/staging/src/k8s.io/api/core/v1/types.go index eef13a25a9f..b664255bcb2 100644 --- a/staging/src/k8s.io/api/core/v1/types.go +++ b/staging/src/k8s.io/api/core/v1/types.go @@ -2466,7 +2466,7 @@ type Taint struct { // TimeAdded represents the time at which the taint was added. // It is only written for NoExecute taints. // +optional - TimeAdded metav1.Time `json:"timeAdded,omitempty" protobuf:"bytes,4,opt,name=timeAdded"` + TimeAdded *metav1.Time `json:"timeAdded,omitempty" protobuf:"bytes,4,opt,name=timeAdded"` } type TaintEffect string diff --git a/test/e2e/scheduling/taints_test.go b/test/e2e/scheduling/taints_test.go index 72dd80a6f14..c4f1e8b9e17 100644 --- a/test/e2e/scheduling/taints_test.go +++ b/test/e2e/scheduling/taints_test.go @@ -36,11 +36,12 @@ import ( ) func getTestTaint() v1.Taint { + now := metav1.Now() return v1.Taint{ Key: "kubernetes.io/e2e-evict-taint-key", Value: "evictTaintVal", Effect: v1.TaintEffectNoExecute, - TimeAdded: metav1.Now(), + TimeAdded: &now, } }