Merge pull request #129554 from zylxjtu/bootid

Add the check of node rebooting in windows reboot_node e2e test
This commit is contained in:
Kubernetes Prow Robot 2025-01-30 17:33:23 -08:00 committed by GitHub
commit 4bf6cdb60c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -50,6 +50,7 @@ var _ = sigDescribe(feature.Windows, "[Excluded:WindowsDocker] [MinimumKubeletVe
framework.ExpectNoError(err, "Error finding Windows node") framework.ExpectNoError(err, "Error finding Windows node")
framework.Logf("Using node: %v", targetNode.Name) framework.Logf("Using node: %v", targetNode.Name)
bootID := targetNode.Status.NodeInfo.BootID
windowsImage := imageutils.GetE2EImage(imageutils.Agnhost) windowsImage := imageutils.GetE2EImage(imageutils.Agnhost)
// Create Windows pod on the selected Windows node Using Agnhost // Create Windows pod on the selected Windows node Using Agnhost
@ -176,32 +177,24 @@ var _ = sigDescribe(feature.Windows, "[Excluded:WindowsDocker] [MinimumKubeletVe
restartCount := 0 restartCount := 0
timeout := time.After(time.Minute * 10) ginkgo.By("Waiting for nodes to be rebooted")
FOR: gomega.Eventually(ctx, func(ctx context.Context) string {
for { refreshNode, err := f.ClientSet.CoreV1().Nodes().Get(ctx, targetNode.Name, metav1.GetOptions{})
select { if err != nil {
case <-timeout: return ""
break FOR
default:
if restartCount > 0 {
break FOR
}
ginkgo.By("Then checking existed agn-test-pod is running on the rebooted host")
agnPodOut, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Get(ctx, agnPod.Name, metav1.GetOptions{})
if err == nil {
lastRestartCount := podutil.GetExistingContainerStatus(agnPodOut.Status.ContainerStatuses, "windows-container").RestartCount
restartCount = int(lastRestartCount - initialRestartCount)
}
time.Sleep(time.Second * 30)
} }
} return refreshNode.Status.NodeInfo.BootID
}).WithPolling(time.Second*30).WithTimeout(time.Minute*10).
ginkgo.By("Checking whether agn-test-pod is rebooted") Should(gomega.BeNumerically(">", bootID), "node was not rebooted")
gomega.Expect(restartCount).To(gomega.Equal(1), "restart count of agn-test-pod is 1")
ginkgo.By("Then checking existed agn-test-pod is running on the rebooted host")
agnPodOut, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Get(ctx, agnPod.Name, metav1.GetOptions{}) agnPodOut, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Get(ctx, agnPod.Name, metav1.GetOptions{})
gomega.Expect(agnPodOut.Status.Phase).To(gomega.Equal(v1.PodRunning))
framework.ExpectNoError(err, "getting pod info after reboot") framework.ExpectNoError(err, "getting pod info after reboot")
lastRestartCount := podutil.GetExistingContainerStatus(agnPodOut.Status.ContainerStatuses, "windows-container").RestartCount
restartCount = int(lastRestartCount - initialRestartCount)
gomega.Expect(restartCount).To(gomega.Equal(1), "restart count of agn-test-pod is 1")
gomega.Expect(agnPodOut.Status.Phase).To(gomega.Equal(v1.PodRunning))
assertConsistentConnectivity(ctx, f, nginxPod.ObjectMeta.Name, "linux", linuxCheck(agnPodOut.Status.PodIP, 80), internalMaxTries) assertConsistentConnectivity(ctx, f, nginxPod.ObjectMeta.Name, "linux", linuxCheck(agnPodOut.Status.PodIP, 80), internalMaxTries)
// create another host process pod to check system boot time // create another host process pod to check system boot time