diff --git a/pkg/controller/deployment/deployment_controller.go b/pkg/controller/deployment/deployment_controller.go index c68a6a8612d..0ae204f3096 100644 --- a/pkg/controller/deployment/deployment_controller.go +++ b/pkg/controller/deployment/deployment_controller.go @@ -758,7 +758,7 @@ func setNewReplicaSetAnnotations(deployment *extensions.Deployment, rs *extensio if rs.Annotations == nil { rs.Annotations = make(map[string]string) } - if rs.Annotations[deploymentutil.RevisionAnnotation] != newRevision { + if rs.Annotations[deploymentutil.RevisionAnnotation] < newRevision { rs.Annotations[deploymentutil.RevisionAnnotation] = newRevision annotationChanged = true glog.V(4).Infof("updating replica set %q's revision to %s - %+v\n", rs.Name, newRevision, rs) @@ -774,10 +774,10 @@ func copyDeploymentAnnotationsToReplicaSet(deployment *extensions.Deployment, rs rs.Annotations = make(map[string]string) } for k, v := range deployment.Annotations { - // Skip apply annotations + // Skip apply annotations and revision annotations // TODO: How to decide which annotations should / should not be copied? // See https://github.com/kubernetes/kubernetes/pull/20035#issuecomment-179558615 - if k == kubectl.LastAppliedConfigAnnotation || rs.Annotations[k] == v { + if k == kubectl.LastAppliedConfigAnnotation || k == deploymentutil.RevisionAnnotation || rs.Annotations[k] == v { continue } rs.Annotations[k] = v