Last active
October 26, 2023 19:18
-
-
Save jjtroberts/1c729c20541783cb52cd6e0e867d7f28 to your computer and use it in GitHub Desktop.
GKE node pool upgrades
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
PROJECT="" | |
LOCATION="us-east4" | |
CLUSTER="" | |
CONTEXT="" | |
FILTER="version:1.25.10-gke.1400" | |
NODEPOOLS=$(gcloud container node-pools list --cluster=$CLUSTER --project=$PROJECT --region=$LOCATION --filter="$FILTER" --format=json | jq -r ".[].name") | |
gcloud config set project $PROJECT | |
kubectl config set-context $CONTEXT | |
for NODEPOOL in $NODEPOOLS; do | |
echo "Processing ${NODEPOOL}..." | |
# Cordon | |
for node in $(kubectl get nodes -l cloud.google.com/gke-nodepool=$NODEPOOL -o=name); do | |
echo "Cordoning ${node}" | |
kubectl cordon "$node"; | |
done | |
# Disable autoscaling | |
echo "Disabling autoscaling for ${NODEPOOL}" | |
gcloud container clusters update $CLUSTER \ | |
--no-enable-autoscaling \ | |
--node-pool=$NODEPOOL \ | |
--region=$LOCATION | |
# Drain | |
for node in $(kubectl get nodes -l cloud.google.com/gke-nodepool=$NODEPOOL -o=name); do | |
echo "Draining ${node}" | |
kubectl drain --force --ignore-daemonsets --delete-emptydir-data --grace-period=10 "$node"; | |
done | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment