mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Merge pull request #40261 from kargakis/fix-deployment-completeness
Automatic merge from submit-queue controller: old pods should block deployment completeness Fixes https://github.com/kubernetes/kubernetes/issues/40207
This commit is contained in:
commit
5b75980c32
@ -816,9 +816,10 @@ func IsRollingUpdate(deployment *extensions.Deployment) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// DeploymentComplete considers a deployment to be complete once its desired replicas equals its
|
// DeploymentComplete considers a deployment to be complete once its desired replicas equals its
|
||||||
// updatedReplicas and it doesn't violate minimum availability.
|
// updatedReplicas, no old pods are running, and it doesn't violate minimum availability.
|
||||||
func DeploymentComplete(deployment *extensions.Deployment, newStatus *extensions.DeploymentStatus) bool {
|
func DeploymentComplete(deployment *extensions.Deployment, newStatus *extensions.DeploymentStatus) bool {
|
||||||
return newStatus.UpdatedReplicas == *(deployment.Spec.Replicas) &&
|
return newStatus.UpdatedReplicas == *(deployment.Spec.Replicas) &&
|
||||||
|
newStatus.Replicas == *(deployment.Spec.Replicas) &&
|
||||||
newStatus.AvailableReplicas >= *(deployment.Spec.Replicas)-MaxUnavailable(*deployment) &&
|
newStatus.AvailableReplicas >= *(deployment.Spec.Replicas)-MaxUnavailable(*deployment) &&
|
||||||
newStatus.ObservedGeneration >= deployment.Generation
|
newStatus.ObservedGeneration >= deployment.Generation
|
||||||
}
|
}
|
||||||
|
@ -892,14 +892,14 @@ func TestRemoveCondition(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestDeploymentComplete(t *testing.T) {
|
func TestDeploymentComplete(t *testing.T) {
|
||||||
deployment := func(desired, current, updated, available, maxUnavailable int32) *extensions.Deployment {
|
deployment := func(desired, current, updated, available, maxUnavailable, maxSurge int32) *extensions.Deployment {
|
||||||
return &extensions.Deployment{
|
return &extensions.Deployment{
|
||||||
Spec: extensions.DeploymentSpec{
|
Spec: extensions.DeploymentSpec{
|
||||||
Replicas: &desired,
|
Replicas: &desired,
|
||||||
Strategy: extensions.DeploymentStrategy{
|
Strategy: extensions.DeploymentStrategy{
|
||||||
RollingUpdate: &extensions.RollingUpdateDeployment{
|
RollingUpdate: &extensions.RollingUpdateDeployment{
|
||||||
MaxUnavailable: func(i int) *intstr.IntOrString { x := intstr.FromInt(i); return &x }(int(maxUnavailable)),
|
MaxUnavailable: func(i int) *intstr.IntOrString { x := intstr.FromInt(i); return &x }(int(maxUnavailable)),
|
||||||
MaxSurge: func() *intstr.IntOrString { x := intstr.FromInt(0); return &x }(),
|
MaxSurge: func(i int) *intstr.IntOrString { x := intstr.FromInt(i); return &x }(int(maxSurge)),
|
||||||
},
|
},
|
||||||
Type: extensions.RollingUpdateDeploymentStrategyType,
|
Type: extensions.RollingUpdateDeploymentStrategyType,
|
||||||
},
|
},
|
||||||
@ -922,25 +922,33 @@ func TestDeploymentComplete(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "complete",
|
name: "complete",
|
||||||
|
|
||||||
d: deployment(5, 5, 5, 4, 1),
|
d: deployment(5, 5, 5, 4, 1, 0),
|
||||||
expected: true,
|
expected: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "not complete",
|
name: "not complete",
|
||||||
|
|
||||||
d: deployment(5, 5, 5, 3, 1),
|
d: deployment(5, 5, 5, 3, 1, 0),
|
||||||
expected: false,
|
expected: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "complete #2",
|
name: "complete #2",
|
||||||
|
|
||||||
d: deployment(5, 5, 5, 5, 0),
|
d: deployment(5, 5, 5, 5, 0, 0),
|
||||||
expected: true,
|
expected: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "not complete #2",
|
name: "not complete #2",
|
||||||
|
|
||||||
d: deployment(5, 5, 4, 5, 0),
|
d: deployment(5, 5, 4, 5, 0, 0),
|
||||||
|
expected: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "not complete #3",
|
||||||
|
|
||||||
|
// old replica set: spec.replicas=1, status.replicas=1, status.availableReplicas=1
|
||||||
|
// new replica set: spec.replicas=1, status.replicas=1, status.availableReplicas=0
|
||||||
|
d: deployment(1, 2, 1, 1, 0, 1),
|
||||||
expected: false,
|
expected: false,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user