Skip to content

Instantly share code, notes, and snippets.

@jmound
Last active August 7, 2023 10:33
Show Gist options
  • Star 27 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save jmound/ff6fa539385d1a057c82fa9fa739492e to your computer and use it in GitHub Desktop.
Save jmound/ff6fa539385d1a057c82fa9fa739492e to your computer and use it in GitHub Desktop.
Bash function to refresh all pods in all deployments by namespace
# based on the "patch deployment" strategy in this comment:
# https://github.com/kubernetes/kubernetes/issues/13488#issuecomment-372532659
# requires jq
# $1 is a valid namespace
function refresh-all-pods() {
echo
DEPLOYMENT_LIST=$(kubectl -n $1 get deployment -o json|jq -r .items[].metadata.name)
echo "Refreshing pods in all Deployments"
for deployment_name in $DEPLOYMENT_LIST ; do
TERMINATION_GRACE_PERIOD_SECONDS=$(kubectl -n $1 get deployment "$deployment_name" -o json|jq .spec.template.spec.terminationGracePeriodSeconds)
if [ "$TERMINATION_GRACE_PERIOD_SECONDS" -eq 30 ]; then
TERMINATION_GRACE_PERIOD_SECONDS='31'
else
TERMINATION_GRACE_PERIOD_SECONDS='30'
fi
patch_string="{\"spec\":{\"template\":{\"spec\":{\"terminationGracePeriodSeconds\":$TERMINATION_GRACE_PERIOD_SECONDS}}}}"
kubectl -n $1 patch deployment $deployment_name -p $patch_string
done
echo
}
refresh-all-pods $NAMESPACE
@zgfh
Copy link

zgfh commented Jul 4, 2019

@APuertaSales echo $COMPLETE_NAMESPACE_LIST $EXCLUDE_NAMESPACE_LIST | sed 's/ /\n/g' not work on mac os
work way: $(echo $COMPLETE_NAMESPACE_LIST $EXCLUDE_NAMESPACE_LIST | xargs -n1 | sort -u | xargs )
link: https://unix.stackexchange.com/questions/353321/remove-all-duplicate-word-from-string-using-shell-script

@eduardobaitello
Copy link

FWIW, Kubernetes 1.15 has now a built-in CLI command to accomplish that :)

CHANGELOG-1.15:

Created a new kubectl rollout restart command that does a rolling restart of a deployment. (#76062)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment