mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Merge pull request #25171 from bprashanth/rolling
Automatic merge from submit-queue Wait for RC to stabilize in rolling-update e2e https://github.com/kubernetes/kubernetes/issues/25170
This commit is contained in:
commit
2524cadeee
@ -1107,6 +1107,36 @@ func waitForRCPodOnNode(c *client.Client, ns, rcName, node string) (*api.Pod, er
|
|||||||
return p, err
|
return p, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WaitForRCToStabilize waits till the RC has a matching generation/replica count between spec and status.
|
||||||
|
func WaitForRCToStabilize(c *client.Client, ns, name string, timeout time.Duration) error {
|
||||||
|
options := api.ListOptions{FieldSelector: fields.Set{
|
||||||
|
"metadata.name": name,
|
||||||
|
"metadata.namespace": ns,
|
||||||
|
}.AsSelector()}
|
||||||
|
w, err := c.ReplicationControllers(ns).Watch(options)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
_, err = watch.Until(timeout, w, func(event watch.Event) (bool, error) {
|
||||||
|
switch event.Type {
|
||||||
|
case watch.Deleted:
|
||||||
|
return false, apierrs.NewNotFound(unversioned.GroupResource{Resource: "replicationcontrollers"}, "")
|
||||||
|
}
|
||||||
|
switch rc := event.Object.(type) {
|
||||||
|
case *api.ReplicationController:
|
||||||
|
if rc.Name == name && rc.Namespace == ns &&
|
||||||
|
rc.Generation <= rc.Status.ObservedGeneration &&
|
||||||
|
rc.Spec.Replicas == rc.Status.Replicas {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
Logf("Waiting for rc %s to stabilize, generation %v observed generation %v spec.replicas %d status.replicas %d",
|
||||||
|
name, rc.Generation, rc.Status.ObservedGeneration, rc.Spec.Replicas, rc.Status.Replicas)
|
||||||
|
}
|
||||||
|
return false, nil
|
||||||
|
})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func WaitForPodToDisappear(c *client.Client, ns, podName string, label labels.Selector, interval, timeout time.Duration) error {
|
func WaitForPodToDisappear(c *client.Client, ns, podName string, label labels.Selector, interval, timeout time.Duration) error {
|
||||||
return wait.PollImmediate(interval, timeout, func() (bool, error) {
|
return wait.PollImmediate(interval, timeout, func() (bool, error) {
|
||||||
Logf("Waiting for pod %s to disappear", podName)
|
Logf("Waiting for pod %s to disappear", podName)
|
||||||
|
@ -904,6 +904,7 @@ var _ = framework.KubeDescribe("Kubectl client", func() {
|
|||||||
if containers == nil || len(containers) != 1 || containers[0].Image != nginxImage {
|
if containers == nil || len(containers) != 1 || containers[0].Image != nginxImage {
|
||||||
framework.Failf("Failed creating rc %s for 1 pod with expected image %s", rcName, nginxImage)
|
framework.Failf("Failed creating rc %s for 1 pod with expected image %s", rcName, nginxImage)
|
||||||
}
|
}
|
||||||
|
framework.WaitForRCToStabilize(c, ns, rcName, framework.PodStartTimeout)
|
||||||
|
|
||||||
By("rolling-update to same image controller")
|
By("rolling-update to same image controller")
|
||||||
framework.RunKubectlOrDie("rolling-update", rcName, "--update-period=1s", "--image="+nginxImage, "--image-pull-policy="+string(api.PullIfNotPresent), nsFlag)
|
framework.RunKubectlOrDie("rolling-update", rcName, "--update-period=1s", "--image="+nginxImage, "--image-pull-policy="+string(api.PullIfNotPresent), nsFlag)
|
||||||
|
Loading…
Reference in New Issue
Block a user