From 2023f54c59397220d351a2e7004ef38636faa9fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20G=C3=A9rczei?= Date: Tue, 22 Dec 2020 13:24:05 +0100 Subject: [PATCH] initial commit --- README.md | 54 ++++++++++++++++++++++++++++++++++++++++ k8s-ubuntu-install | 10 ++++++++ k8s-ubuntu-update-master | 14 +++++++++++ k8s-ubuntu-update-os | 5 ++++ k8s-ubuntu-update-worker | 13 ++++++++++ 5 files changed, 96 insertions(+) create mode 100644 README.md create mode 100644 k8s-ubuntu-install create mode 100644 k8s-ubuntu-update-master create mode 100644 k8s-ubuntu-update-os create mode 100644 k8s-ubuntu-update-worker diff --git a/README.md b/README.md new file mode 100644 index 0000000..9898b02 --- /dev/null +++ b/README.md @@ -0,0 +1,54 @@ +# scripts to deploy / upgrade Kubernetes lab clusters on Ubuntu + +### I use Ubuntu (Server 20.04) in order to make use of up-to-date cluster and kernel packages. + +# ASSUMPTIONS +- 2+ available role-dedicated lab nodes (ideally 1 master and 2+ workers) running Ubuntu (I use 4 (1+3) KVM guest domains created via libvirt, YMMV) +- SSH access to all nodes with pubkey auth +- sudo as root without password +- variables named K8S_VERSION_* sent and accepted via SSH +- one doesn't know Ansible (half-joking there, this is more of an educational, "quick 'n' dirty" effort) +- one knows there are other, possibly better ways + +# INSTALLATION +ssh master1 bash -xs < k8s-ubuntu-install
+ssh worker1 bash -xs < k8s-ubuntu-install + +## generic installation procedure +- kubeadm init on master1 +- kubeadm join on worker1 + +# UPGRADE +## when upgrading point releases +export K8S_VERSION_CURRENT=$(kc version --short | awk '/^Server/{print substr($3,2)}')
+export K8S_VERSION_LATEST=$(curl -sL https://dl.k8s.io/release/stable-${K8S_VERSION_CURRENT%.*}.txt) + +## otherwise +export K8S_VERSION_MAJOR=1
+export K8S_VERSION_LATEST=$(curl -sL https://dl.k8s.io/release/stable-${K8S_VERSION_MAJOR}.txt) + +### control plane first +kubectl drain master1 --ignore-daemonsets --delete-local-data
+ssh master1 sudo apt update + +### when upgrading the OS +ssh master1 bash -xs < k8s-ubuntu-update-os + +### otherwise +ssh master1 bash -xs < k8s-ubuntu-update-master
+kubectl uncordon master1
+sleep 60
+ssh master1 sudo docker image prune -af + +### workload plane, workers one by one +kubectl drain worker1 --ignore-daemonsets --delete-local-data
+ssh worker1 sudo apt update + +### when upgrading the OS +ssh worker1 bash -xs < k8s-ubuntu-update-os + +### otherwise +ssh worker1 bash -xs < k8s-ubuntu-update-worker
+kubectl uncordon worker1
+sleep 60
+ssh worker1 sudo docker image prune -af diff --git a/k8s-ubuntu-install b/k8s-ubuntu-install new file mode 100644 index 0000000..c11c1b1 --- /dev/null +++ b/k8s-ubuntu-install @@ -0,0 +1,10 @@ +sudo apt-get update && sudo apt-get install -y apt-transport-https curl +curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - +cat <