plain-refrigerator-80586
09/14/2022, 3:12 PMbulky-sunset-52084
09/14/2022, 5:54 PMFor the admin cluster, I'm wondering if replacing not up to date nodes with new ones based on an up to date template is a good idea.💯 that would be the most "cattle not pets" way of doing it. ephemeral nodes will make your life a million times easier then trying to manage a bunch of individual linux nodes. SUSE also sells a product called SUMA (Open Source: Uyuni) if the full blown node replacements don't work... hope this helps 🙂
plain-refrigerator-80586
09/15/2022, 6:39 AMbulky-sunset-52084
09/15/2022, 10:23 PMhappy-wire-88980
09/15/2022, 10:25 PM#!/bin/bash
while getopts "c:h" opt; do
case $opt in
c)
CLUSTER="${OPTARG}"
;;
h)
help && exit 0
;;
:)
echo "Option -$OPTARG requires an argument."
exit 1
;;
*)
help && exit 0
esac
done
if [[ -z "${CLUSTER}" ]]; then
echo "Please specify a cluster name."
exit 1
fi
export KUBECONFIG=~/.kube/${CLUSTER}
kubeconfig=~/.kube/${CLUSTER}
cd ~/scripts/rolling-patching/
check_ssh() {
echo "Checking ${server}"
until ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@${server} 'uptime' > /dev/null
do
echo "Trying again..."
sleep 1
done
}
echo "Starting patching..."
for server in `kubectl get nodes -o name | awk -F '/' '{print $2}'`
do
i=0
if ping -c 1 $server
then
echo "Server is pingable..."
scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ./90forceyes root@${server}:/etc/apt/apt.conf.d/
scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ./release-upgrades root@${server}:/etc/update-manager/release-upgrades
echo "Draining node..."
kubectl --kubeconfig ${kubeconfig} drain --delete-emptydir-data --ignore-daemonsets ${server}
echo "Running apt update and upgrade"
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@${server} 'export DEBIAN_FRONTEND=noninteractive; apt-get update && apt-get -o Dpkg::Options::="--force-confold" -o Dpkg::Options::=--force-confdef upgrade -q -y --allow-downgrades --allow-remove-essential --allow-change-held-packages && apt-get -o Dpkg::Options::="--force-confold" -o Dpkg::Options::=--force-confdef dist-upgrade -q -y --allow-downgrades --allow-remove-essential --allow-change-held-packages && reboot'
sleep 60
check_ssh
echo "Running do-release-upgrade"
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@${server} 'export DEBIAN_FRONTEND=noninteractive; do-release-upgrade -f DistUpgradeViewNonInteractive; reboot'
sleep 450
echo "Uncordon node..,"
kubectl --kubeconfig ${kubeconfig} uncordon ${server}
echo "Sleeping..."
sleep 900
else
echo "Skipping..."
fi
done
plain-refrigerator-80586
09/16/2022, 7:00 AMhappy-wire-88980
09/16/2022, 7:01 AMplain-refrigerator-80586
09/16/2022, 7:29 AM