diff --git a/staging/src/k8s.io/kubectl/pkg/describe/describe.go b/staging/src/k8s.io/kubectl/pkg/describe/describe.go index 65044a44a44..2a8bf9cc50a 100644 --- a/staging/src/k8s.io/kubectl/pkg/describe/describe.go +++ b/staging/src/k8s.io/kubectl/pkg/describe/describe.go @@ -3519,8 +3519,17 @@ func (d *NodeDescriber) Describe(namespace, name string, describerSettings Descr klog.Errorf("Unable to construct reference to '%#v': %v", node, err) } else { // TODO: We haven't decided the namespace for Node object yet. - ref.UID = types.UID(ref.Name) + // there are two UIDs for host events: + // controller use node.uid + // kubelet use node.name + // TODO: Uniform use of UID events, _ = searchEvents(d.CoreV1(), ref, describerSettings.ChunkSize) + + ref.UID = types.UID(ref.Name) + eventsInvName, _ := searchEvents(d.CoreV1(), ref, describerSettings.ChunkSize) + + // Merge the results of two queries + events.Items = append(events.Items, eventsInvName.Items...) } } diff --git a/staging/src/k8s.io/kubectl/pkg/describe/describe_test.go b/staging/src/k8s.io/kubectl/pkg/describe/describe_test.go index 03b4b7dca3a..7314feb20e8 100644 --- a/staging/src/k8s.io/kubectl/pkg/describe/describe_test.go +++ b/staging/src/k8s.io/kubectl/pkg/describe/describe_test.go @@ -4934,6 +4934,7 @@ func TestDescribeNode(t *testing.T) { &corev1.Node{ ObjectMeta: metav1.ObjectMeta{ Name: "bar", + UID: "uid", }, Spec: corev1.NodeSpec{ Unschedulable: true, @@ -4986,6 +4987,42 @@ func TestDescribeNode(t *testing.T) { Phase: corev1.PodRunning, }, }, + &corev1.EventList{ + Items: []corev1.Event{ + { + ObjectMeta: metav1.ObjectMeta{ + Name: "event-1", + Namespace: "default", + }, + InvolvedObject: corev1.ObjectReference{ + Kind: "Node", + Name: "bar", + UID: "bar", + }, + Message: "Node bar status is now: NodeHasNoDiskPressure", + FirstTimestamp: metav1.NewTime(time.Date(2014, time.January, 15, 0, 0, 0, 0, time.UTC)), + LastTimestamp: metav1.NewTime(time.Date(2014, time.January, 15, 0, 0, 0, 0, time.UTC)), + Count: 1, + Type: corev1.EventTypeNormal, + }, + { + ObjectMeta: metav1.ObjectMeta{ + Name: "event-2", + Namespace: "default", + }, + InvolvedObject: corev1.ObjectReference{ + Kind: "Node", + Name: "bar", + UID: "0ceac5fb-a393-49d7-b04f-9ea5f18de5e9", + }, + Message: "Node bar status is now: NodeReady", + FirstTimestamp: metav1.NewTime(time.Date(2014, time.January, 15, 0, 0, 0, 0, time.UTC)), + LastTimestamp: metav1.NewTime(time.Date(2014, time.January, 15, 0, 0, 0, 0, time.UTC)), + Count: 2, + Type: corev1.EventTypeNormal, + }, + }, + }, ) c := &describeClient{T: t, Namespace: "foo", Interface: fake} d := NodeDescriber{c} @@ -5003,7 +5040,9 @@ func TestDescribeNode(t *testing.T) { memory 1Gi (8%) 2Gi (16%) ephemeral-storage 0 (0%) 0 (0%) hugepages-1Gi 0 (0%) 0 (0%) - hugepages-2Mi 512Mi (25%) 512Mi (25%)`} + hugepages-2Mi 512Mi (25%) 512Mi (25%)`, + `Node bar status is now: NodeHasNoDiskPressure`, + `Node bar status is now: NodeReady`} for _, expected := range expectedOut { if !strings.Contains(out, expected) { t.Errorf("expected to find %q in output: %q", expected, out)