Upgrade from 2.0.x =================== This is a guide to upgrade Burrito Begonia 2.0.x to 2.1.1 I assume Burrito Begonia 2.0.x is already installed and running. This guide will show you how to upgrade it to Burrito Begonia 2.1.1. Here is the example node ip address table. =============== ================ Hostname management IP =============== ================ control1 192.168.21.111 control2 192.168.21.112 control3 192.168.21.113 compute1 192.168.21.114 compute2 192.168.21.115 =============== ================ * KeepAlived VIP: 192.168.21.110 This is a k8s cluster version table. =============== ============= ============== Components Begonia 2.0.x Begonia 2.1.1 =============== ============= ============== containerd v1.7.13 v1.7.16 kubernetes v1.29.2 v1.30.3 kubeadm v1.29.2 v1.30.3 etcd v3.5.10 v3.5.12 calico v3.26.4 v3.27.3 coredns v1.11.1 same as left helm v3.14.2 same as left nerdctl 1.7.1 1.7.4 crictl v1.29.0 v1.30.0 nodelocaldns 1.22.28 same as left cert-manager v1.13.2 v1.14.7 metallb v0.13.9 same as left registry 2.8.3 same as left =============== ============= ============== Modify kube-apiserver manifest -------------------------------- First, we need to modify kube-apiserver manifest. Modify --anonymous-auth to true in /etc/kubernetes/manifests/kube-apiserver.yaml on every control node.:: $ sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml ... - --anonymous-auth=true Wait until kube-apiserver is restarted on each control node. Check if we can connect to each kube-apiserver.:: $ curl -sk https://192.168.21.111:6443/healthz ok $ curl -sk https://192.168.21.112:6443/healthz ok $ curl -sk https://192.168.21.113:6443/healthz ok Prepare 2.1.1 iso -------------------- We will use Burrito 2.1.1 iso to upgrade the existing Burrito 2.0.x cluster. Mount burrito-2.1.1_8.10.iso in /mnt.:: $ sudo mount -o loop,ro burrito-2.1.1_8.10.iso /mnt Unarchive burrito-2.1.1 tarball from the iso.:: $ tar xzf /mnt/burrito-2.1.1.tar.gz Remove localrepo.cfg and registry.cfg in /etc/haproxy/conf.d/.:: $ sudo rm /etc/haproxy/conf.d/{localrepo,registry}.cfg These haproxy configuration files will be recreated while upgrading. Reload haproxy.service on the first control node.:: $ sudo systemctl reload haproxy.service Run prepare.sh script.:: $ cd burrito-2.1.1 $ ./prepare.sh offline Copy the patched vars.yml.sample to vars.yml.:: $ cp vars.yml.sample vars.yml Copy files from the existing burrito dir (e.g. $HOME/burrito-2.0.x).:: $ cp $HOME/burrito-2.0.x/.vaultpass . $ cp $HOME/burrito-2.0.x/group_vars/all/vault.yml group_vars/all/ $ cp $HOME/burrito-2.0.x/.offline_flag . Edit hosts and vars.yml for your environment.:: $ vi hosts $ vi vars.yml Edit group_vars/all/\*.yml if you modified them for your environment.:: $ vi group_vars/all/netapp_vars.yml $ vi group_vars/all/ceph_vars.yml Check the node connectivity.:: $ ./run.sh ping Check if keepalived_vip(192.168.21.110) is on the first control node.:: $ ip -br a s dev eth1 eth1 UP 192.168.21.111/24 192.168.21.110/32 fe80::5054:ff:feeb:2b8b/64 If it is not, move keepalived_vip to the first control node by restarting keepalived service. For example, if keepalived_vip is on the second control node, restart keepalived service on the second control node.:: $ sudo systemctl restart keepalived.service Then the keepalived_vip will be moved to the first control node. Remove registry, localrepo, and asklepios pods.:: $ sudo kubectl delete deploy registry localrepo asklepios -n kube-system deployment.apps "registry" deleted deployment.apps "localrepo" deleted deployment.apps "asklepios" deleted These pods will be recreated while upgrading. Run preflight playbook.:: $ ./run.sh preflight Run HA playbook.:: $ ./run.sh ha You are ready to upgrade kubernetes cluster. Upgrade kubernetes ------------------- Run k8s playbook with upgrade_cluster_setup=true.:: $ ./run.sh k8s -e upgrade_cluster_setup=true It will take a long time. It took about 50 minutes in my testbed. Check if the kubernetes version is v1.30.3.:: $ sudo kubectl version Client Version: v1.30.3 Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3 Server Version: v1.30.3 Run storage playbook.:: $ ./run.sh storage Run patch playbook.:: $ ./run.sh patch Run registry playbook.:: $ ./run.sh registry Check the new images(e.g. kube-apiserver:v1.30.3) are added to the local registry.:: $ curl -sk https://192.168.21.110:32680/v2/kube-apiserver/tags/list {"name":"kube-apiserver","tags":["v1.30.3","v1.29.2"]} Run landing playbook.:: $ ./run.sh landing Check the new images (e.g. kube-apiserver:v1.29.2) are added to the genesis registry.:: $ curl -sk https://192.168.21.110:6000/v2/kube-apiserver/tags/list {"name":"kube-apiserver","tags":["v1.29.2","v1.30.3"]} Run burrito playbook with system tag to update /etc/hosts file.:: $ ./run.sh burrito --tags=system Kubernetes upgrade is done!