kubernetes: k8s.io/kubernetes/pkg/controller/deployment/util Index | Files

package util

import "k8s.io/kubernetes/pkg/controller/deployment/util"

Index

Package Files

deployment_util.go

Constants

const (
    // RevisionAnnotation is the revision annotation of a deployment's replica sets which records its rollout sequence
    RevisionAnnotation = "deployment.kubernetes.io/revision"
    // RevisionHistoryAnnotation maintains the history of all old revisions that a replica set has served for a deployment.
    RevisionHistoryAnnotation = "deployment.kubernetes.io/revision-history"
    // DesiredReplicasAnnotation is the desired replicas for a deployment recorded as an annotation
    // in its replica sets. Helps in separating scaling events from the rollout process and for
    // determining if the new replica set for a deployment is really saturated.
    DesiredReplicasAnnotation = "deployment.kubernetes.io/desired-replicas"
    // MaxReplicasAnnotation is the maximum replicas a deployment can have at a given point, which
    // is deployment.spec.replicas + maxSurge. Used by the underlying replica sets to estimate their
    // proportions in case the deployment has surge replicas.
    MaxReplicasAnnotation = "deployment.kubernetes.io/max-replicas"

    // RollbackRevisionNotFound is not found rollback event reason
    RollbackRevisionNotFound = "DeploymentRollbackRevisionNotFound"
    // RollbackTemplateUnchanged is the template unchanged rollback event reason
    RollbackTemplateUnchanged = "DeploymentRollbackTemplateUnchanged"
    // RollbackDone is the done rollback event reason
    RollbackDone = "DeploymentRollback"

    // ReplicaSetUpdatedReason is added in a deployment when one of its replica sets is updated as part
    // of the rollout process.
    ReplicaSetUpdatedReason = "ReplicaSetUpdated"
    // FailedRSCreateReason is added in a deployment when it cannot create a new replica set.
    FailedRSCreateReason = "ReplicaSetCreateError"
    // NewReplicaSetReason is added in a deployment when it creates a new replica set.
    NewReplicaSetReason = "NewReplicaSetCreated"
    // FoundNewRSReason is added in a deployment when it adopts an existing replica set.
    FoundNewRSReason = "FoundNewReplicaSet"
    // NewRSAvailableReason is added in a deployment when its newest replica set is made available
    // ie. the number of new pods that have passed readiness checks and run for at least minReadySeconds
    // is at least the minimum available pods that need to run for the deployment.
    NewRSAvailableReason = "NewReplicaSetAvailable"
    // TimedOutReason is added in a deployment when its newest replica set fails to show any progress
    // within the given deadline (progressDeadlineSeconds).
    TimedOutReason = "ProgressDeadlineExceeded"
    // PausedDeployReason is added in a deployment when it is paused. Lack of progress shouldn't be
    // estimated once a deployment is paused.
    PausedDeployReason = "DeploymentPaused"
    // ResumedDeployReason is added in a deployment when it is resumed. Useful for not failing accidentally
    // deployments that paused amidst a rollout and are bounded by a deadline.
    ResumedDeployReason = "DeploymentResumed"

    // MinimumReplicasAvailable is added in a deployment when it has its minimum replicas required available.
    MinimumReplicasAvailable = "MinimumReplicasAvailable"
    // MinimumReplicasUnavailable is added in a deployment when it doesn't have the minimum required replicas
    // available.
    MinimumReplicasUnavailable = "MinimumReplicasUnavailable"
)

func DeploymentComplete Uses

func DeploymentComplete(deployment *apps.Deployment, newStatus *apps.DeploymentStatus) bool

DeploymentComplete considers a deployment to be complete once all of its desired replicas are updated and available, and no old pods are running.

func DeploymentProgressing Uses

func DeploymentProgressing(deployment *apps.Deployment, newStatus *apps.DeploymentStatus) bool

DeploymentProgressing reports progress for a deployment. Progress is estimated by comparing the current with the new status of the deployment that the controller is observing. More specifically, when new pods are scaled up or become ready or available, or old pods are scaled down, then we consider the deployment is progressing.

func DeploymentTimedOut Uses

func DeploymentTimedOut(deployment *apps.Deployment, newStatus *apps.DeploymentStatus) bool

DeploymentTimedOut considers a deployment to have timed out once its condition that reports progress is older than progressDeadlineSeconds or a Progressing condition with a TimedOutReason reason already exists.

func EqualIgnoreHash Uses

func EqualIgnoreHash(template1, template2 *v1.PodTemplateSpec) bool

EqualIgnoreHash returns true if two given podTemplateSpec are equal, ignoring the diff in value of Labels[pod-template-hash] We ignore pod-template-hash because: 1. The hash result would be different upon podTemplateSpec API changes

(e.g. the addition of a new field will cause the hash code to change)

2. The deployment template won't have hash labels

func FindActiveOrLatest Uses

func FindActiveOrLatest(newRS *apps.ReplicaSet, oldRSs []*apps.ReplicaSet) *apps.ReplicaSet

FindActiveOrLatest returns the only active or the latest replica set in case there is at most one active replica set. If there are more active replica sets, then we should proportionally scale them.

func FindNewReplicaSet Uses

func FindNewReplicaSet(deployment *apps.Deployment, rsList []*apps.ReplicaSet) *apps.ReplicaSet

FindNewReplicaSet returns the new RS this given deployment targets (the one with the same pod template).

func FindOldReplicaSets Uses

func FindOldReplicaSets(deployment *apps.Deployment, rsList []*apps.ReplicaSet) ([]*apps.ReplicaSet, []*apps.ReplicaSet)

FindOldReplicaSets returns the old replica sets targeted by the given Deployment, with the given slice of RSes. Note that the first set of old replica sets doesn't include the ones with no pods, and the second set of old replica sets include all old replica sets.

func GetActualReplicaCountForReplicaSets Uses

func GetActualReplicaCountForReplicaSets(replicaSets []*apps.ReplicaSet) int32

GetActualReplicaCountForReplicaSets returns the sum of actual replicas of the given replica sets.

func GetAllReplicaSets Uses

func GetAllReplicaSets(deployment *apps.Deployment, c appsclient.AppsV1Interface) ([]*apps.ReplicaSet, []*apps.ReplicaSet, *apps.ReplicaSet, error)

GetAllReplicaSets returns the old and new replica sets targeted by the given Deployment. It gets PodList and ReplicaSetList from client interface. Note that the first set of old replica sets doesn't include the ones with no pods, and the second set of old replica sets include all old replica sets. The third returned value is the new replica set, and it may be nil if it doesn't exist yet.

func GetAvailableReplicaCountForReplicaSets Uses

func GetAvailableReplicaCountForReplicaSets(replicaSets []*apps.ReplicaSet) int32

GetAvailableReplicaCountForReplicaSets returns the number of available pods corresponding to the given replica sets.

func GetDeploymentCondition Uses

func GetDeploymentCondition(status apps.DeploymentStatus, condType apps.DeploymentConditionType) *apps.DeploymentCondition

GetDeploymentCondition returns the condition with the provided type.

func GetDesiredReplicasAnnotation Uses

func GetDesiredReplicasAnnotation(rs *apps.ReplicaSet) (int32, bool)

GetDesiredReplicasAnnotation returns the number of desired replicas

func GetNewReplicaSet Uses

func GetNewReplicaSet(deployment *apps.Deployment, c appsclient.AppsV1Interface) (*apps.ReplicaSet, error)

GetNewReplicaSet returns a replica set that matches the intent of the given deployment; get ReplicaSetList from client interface. Returns nil if the new replica set doesn't exist yet.

func GetOldReplicaSets Uses

func GetOldReplicaSets(deployment *apps.Deployment, c appsclient.AppsV1Interface) ([]*apps.ReplicaSet, []*apps.ReplicaSet, error)

GetOldReplicaSets returns the old replica sets targeted by the given Deployment; get PodList and ReplicaSetList from client interface. Note that the first set of old replica sets doesn't include the ones with no pods, and the second set of old replica sets include all old replica sets.

func GetProportion Uses

func GetProportion(rs *apps.ReplicaSet, d apps.Deployment, deploymentReplicasToAdd, deploymentReplicasAdded int32) int32

GetProportion will estimate the proportion for the provided replica set using 1. the current size of the parent deployment, 2. the replica count that needs be added on the replica sets of the deployment, and 3. the total replicas added in the replica sets of the deployment so far.

func GetReadyReplicaCountForReplicaSets Uses

func GetReadyReplicaCountForReplicaSets(replicaSets []*apps.ReplicaSet) int32

GetReadyReplicaCountForReplicaSets returns the number of ready pods corresponding to the given replica sets.

func GetReplicaCountForReplicaSets Uses

func GetReplicaCountForReplicaSets(replicaSets []*apps.ReplicaSet) int32

GetReplicaCountForReplicaSets returns the sum of Replicas of the given replica sets.

func HasProgressDeadline Uses

func HasProgressDeadline(d *apps.Deployment) bool

HasProgressDeadline checks if the Deployment d is expected to surface the reason "ProgressDeadlineExceeded" when the Deployment progress takes longer than expected time.

func HasRevisionHistoryLimit Uses

func HasRevisionHistoryLimit(d *apps.Deployment) bool

HasRevisionHistoryLimit checks if the Deployment d is expected to keep a specified number of old replicaSets. These replicaSets are mainly kept with the purpose of rollback. The RevisionHistoryLimit can start from 0 (no retained replicasSet). When set to math.MaxInt32, the Deployment will keep all revisions.

func IsRollingUpdate Uses

func IsRollingUpdate(deployment *apps.Deployment) bool

IsRollingUpdate returns true if the strategy type is a rolling update.

func IsSaturated Uses

func IsSaturated(deployment *apps.Deployment, rs *apps.ReplicaSet) bool

IsSaturated checks if the new replica set is saturated by comparing its size with its deployment size. Both the deployment and the replica set have to believe this replica set can own all of the desired replicas in the deployment and the annotation helps in achieving that. All pods of the ReplicaSet need to be available.

func LastRevision Uses

func LastRevision(allRSs []*apps.ReplicaSet) int64

LastRevision finds the second max revision number in all replica sets (the last revision)

func ListPods Uses

func ListPods(deployment *apps.Deployment, rsList []*apps.ReplicaSet, getPodList podListFunc) (*v1.PodList, error)

ListPods returns a list of pods the given deployment targets. This needs a list of ReplicaSets for the Deployment, which can be found with ListReplicaSets(). Note that this does NOT attempt to reconcile ControllerRef (adopt/orphan), because only the controller itself should do that. However, it does filter out anything whose ControllerRef doesn't match.

func ListReplicaSets Uses

func ListReplicaSets(deployment *apps.Deployment, getRSList RsListFunc) ([]*apps.ReplicaSet, error)

ListReplicaSets returns a slice of RSes the given deployment targets. Note that this does NOT attempt to reconcile ControllerRef (adopt/orphan), because only the controller itself should do that. However, it does filter out anything whose ControllerRef doesn't match.

func MaxRevision Uses

func MaxRevision(allRSs []*apps.ReplicaSet) int64

MaxRevision finds the highest revision in the replica sets

func MaxSurge Uses

func MaxSurge(deployment apps.Deployment) int32

MaxSurge returns the maximum surge pods a rolling deployment can take.

func MaxUnavailable Uses

func MaxUnavailable(deployment apps.Deployment) int32

MaxUnavailable returns the maximum unavailable pods a rolling deployment can take.

func MinAvailable Uses

func MinAvailable(deployment *apps.Deployment) int32

MinAvailable returns the minimum available pods of a given deployment

func NewDeploymentCondition Uses

func NewDeploymentCondition(condType apps.DeploymentConditionType, status v1.ConditionStatus, reason, message string) *apps.DeploymentCondition

NewDeploymentCondition creates a new deployment condition.

func NewRSNewReplicas Uses

func NewRSNewReplicas(deployment *apps.Deployment, allRSs []*apps.ReplicaSet, newRS *apps.ReplicaSet) (int32, error)

NewRSNewReplicas calculates the number of replicas a deployment's new RS should have. When one of the followings is true, we're rolling out the deployment; otherwise, we're scaling it. 1) The new RS is saturated: newRS's replicas == deployment's replicas 2) Max number of pods allowed is reached: deployment's replicas + maxSurge == all RSs' replicas

func RemoveDeploymentCondition Uses

func RemoveDeploymentCondition(status *apps.DeploymentStatus, condType apps.DeploymentConditionType)

RemoveDeploymentCondition removes the deployment condition with the provided type.

func ReplicaSetToDeploymentCondition Uses

func ReplicaSetToDeploymentCondition(cond apps.ReplicaSetCondition) apps.DeploymentCondition

ReplicaSetToDeploymentCondition converts a replica set condition into a deployment condition. Useful for promoting replica set failure conditions into deployments.

func ReplicasAnnotationsNeedUpdate Uses

func ReplicasAnnotationsNeedUpdate(rs *apps.ReplicaSet, desiredReplicas, maxReplicas int32) bool

ReplicasAnnotationsNeedUpdate return true if ReplicasAnnotations need to be updated

func ResolveFenceposts Uses

func ResolveFenceposts(maxSurge, maxUnavailable *intstrutil.IntOrString, desired int32) (int32, int32, error)

ResolveFenceposts resolves both maxSurge and maxUnavailable. This needs to happen in one step. For example:

2 desired, max unavailable 1%, surge 0% - should scale old(-1), then new(+1), then old(-1), then new(+1) 1 desired, max unavailable 1%, surge 0% - should scale old(-1), then new(+1) 2 desired, max unavailable 25%, surge 1% - should scale new(+1), then old(-1), then new(+1), then old(-1) 1 desired, max unavailable 25%, surge 1% - should scale new(+1), then old(-1) 2 desired, max unavailable 0%, surge 1% - should scale new(+1), then old(-1), then new(+1), then old(-1) 1 desired, max unavailable 0%, surge 1% - should scale new(+1), then old(-1)

func Revision Uses

func Revision(obj runtime.Object) (int64, error)

Revision returns the revision number of the input object.

func SetDeploymentAnnotationsTo Uses

func SetDeploymentAnnotationsTo(deployment *apps.Deployment, rollbackToRS *apps.ReplicaSet)

SetDeploymentAnnotationsTo sets deployment's annotations as given RS's annotations. This action should be done if and only if the deployment is rolling back to this rs. Note that apply and revision annotations are not changed.

func SetDeploymentCondition Uses

func SetDeploymentCondition(status *apps.DeploymentStatus, condition apps.DeploymentCondition)

SetDeploymentCondition updates the deployment to include the provided condition. If the condition that we are about to add already exists and has the same status and reason then we are not going to update.

func SetDeploymentRevision Uses

func SetDeploymentRevision(deployment *apps.Deployment, revision string) bool

SetDeploymentRevision updates the revision for a deployment.

func SetFromReplicaSetTemplate Uses

func SetFromReplicaSetTemplate(deployment *apps.Deployment, template v1.PodTemplateSpec) *apps.Deployment

SetFromReplicaSetTemplate sets the desired PodTemplateSpec from a replica set template to the given deployment.

func SetNewReplicaSetAnnotations Uses

func SetNewReplicaSetAnnotations(deployment *apps.Deployment, newRS *apps.ReplicaSet, newRevision string, exists bool, revHistoryLimitInChars int) bool

SetNewReplicaSetAnnotations sets new replica set's annotations appropriately by updating its revision and copying required deployment annotations to it; it returns true if replica set's annotation is changed.

func SetReplicasAnnotations Uses

func SetReplicasAnnotations(rs *apps.ReplicaSet, desiredReplicas, maxReplicas int32) bool

SetReplicasAnnotations sets the desiredReplicas and maxReplicas into the annotations

func WaitForObservedDeployment Uses

func WaitForObservedDeployment(getDeploymentFunc func() (*apps.Deployment, error), desiredGeneration int64, interval, timeout time.Duration) error

WaitForObservedDeployment polls for deployment to be updated so that deployment.Status.ObservedGeneration >= desiredGeneration. Returns error if polling timesout.

type RsListFunc Uses

type RsListFunc func(string, metav1.ListOptions) ([]*apps.ReplicaSet, error)

RsListFunc returns the ReplicaSet from the ReplicaSet namespace and the List metav1.ListOptions.

func RsListFromClient Uses

func RsListFromClient(c appsclient.AppsV1Interface) RsListFunc

RsListFromClient returns an rsListFunc that wraps the given client.

Package util imports 20 packages (graph) and is imported by 407 packages. Updated 2019-05-18. Refresh now. Tools for package owners.