mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Merge pull request #36432 from kargakis/controller-fixes
Automatic merge from submit-queue Update deployment status only when there is a new scaling update during a rollout @kubernetes/deployment
This commit is contained in:
commit
256a99d220
@ -500,7 +500,7 @@ func (dc *DeploymentController) scale(deployment *extensions.Deployment, newRS *
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Use transactions when we have them.
|
// TODO: Use transactions when we have them.
|
||||||
if _, err := dc.scaleReplicaSet(rs, nameToSize[rs.Name], deployment, scalingOperation); err != nil {
|
if _, _, err := dc.scaleReplicaSet(rs, nameToSize[rs.Name], deployment, scalingOperation); err != nil {
|
||||||
// Return as soon as we fail, the deployment is requeued
|
// Return as soon as we fail, the deployment is requeued
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -520,28 +520,33 @@ func (dc *DeploymentController) scaleReplicaSetAndRecordEvent(rs *extensions.Rep
|
|||||||
} else {
|
} else {
|
||||||
scalingOperation = "down"
|
scalingOperation = "down"
|
||||||
}
|
}
|
||||||
newRS, err := dc.scaleReplicaSet(rs, newScale, deployment, scalingOperation)
|
scaled, newRS, err := dc.scaleReplicaSet(rs, newScale, deployment, scalingOperation)
|
||||||
return true, newRS, err
|
return scaled, newRS, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dc *DeploymentController) scaleReplicaSet(rs *extensions.ReplicaSet, newScale int32, deployment *extensions.Deployment, scalingOperation string) (*extensions.ReplicaSet, error) {
|
func (dc *DeploymentController) scaleReplicaSet(rs *extensions.ReplicaSet, newScale int32, deployment *extensions.Deployment, scalingOperation string) (bool, *extensions.ReplicaSet, error) {
|
||||||
objCopy, err := api.Scheme.Copy(rs)
|
objCopy, err := api.Scheme.Copy(rs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return false, nil, err
|
||||||
}
|
}
|
||||||
rsCopy := objCopy.(*extensions.ReplicaSet)
|
rsCopy := objCopy.(*extensions.ReplicaSet)
|
||||||
|
|
||||||
sizeNeedsUpdate := *(rsCopy.Spec.Replicas) != newScale
|
sizeNeedsUpdate := *(rsCopy.Spec.Replicas) != newScale
|
||||||
|
// TODO: Do not mutate the replica set here, instead simply compare the annotation and if they mismatch
|
||||||
|
// call SetReplicasAnnotations inside the following if clause. Then we can also move the deep-copy from
|
||||||
|
// above inside the if too.
|
||||||
annotationsNeedUpdate := deploymentutil.SetReplicasAnnotations(rsCopy, *(deployment.Spec.Replicas), *(deployment.Spec.Replicas)+deploymentutil.MaxSurge(*deployment))
|
annotationsNeedUpdate := deploymentutil.SetReplicasAnnotations(rsCopy, *(deployment.Spec.Replicas), *(deployment.Spec.Replicas)+deploymentutil.MaxSurge(*deployment))
|
||||||
|
|
||||||
|
scaled := false
|
||||||
if sizeNeedsUpdate || annotationsNeedUpdate {
|
if sizeNeedsUpdate || annotationsNeedUpdate {
|
||||||
*(rsCopy.Spec.Replicas) = newScale
|
*(rsCopy.Spec.Replicas) = newScale
|
||||||
rs, err = dc.client.Extensions().ReplicaSets(rsCopy.Namespace).Update(rsCopy)
|
rs, err = dc.client.Extensions().ReplicaSets(rsCopy.Namespace).Update(rsCopy)
|
||||||
if err == nil && sizeNeedsUpdate {
|
if err == nil && sizeNeedsUpdate {
|
||||||
|
scaled = true
|
||||||
dc.eventRecorder.Eventf(deployment, v1.EventTypeNormal, "ScalingReplicaSet", "Scaled %s replica set %s to %d", scalingOperation, rs.Name, newScale)
|
dc.eventRecorder.Eventf(deployment, v1.EventTypeNormal, "ScalingReplicaSet", "Scaled %s replica set %s to %d", scalingOperation, rs.Name, newScale)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return rs, err
|
return scaled, rs, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// cleanupDeployment is responsible for cleaning up a deployment ie. retains all but the latest N old replica sets
|
// cleanupDeployment is responsible for cleaning up a deployment ie. retains all but the latest N old replica sets
|
||||||
|
Loading…
Reference in New Issue
Block a user