--- # # Upgrade kubernetes cluster # # https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/ # # Usage example: # # VERSION=1.30.2 # ansible-playbook playbooks/upgrade.yaml --extra-vars "version=$VERSION" # - name: Upgrade and hold kubeadm package hosts: master,ingress,nfs,worker,gpu become: true tasks: - name: New k8s repository copy: dest: /etc/apt/sources.list.d/pkgs_k8s_io_core_stable_v1_30_deb.list content: deb https://pkgs.k8s.io/core:/stable:/v1.30/deb/ / mode: 0644 - name: Upgrade packages apt: name: kubeadm={{ version }}* state: present force: true update_cache: true - name: Hold packages dpkg_selections: name: "{{ item }}" selection: hold loop: - kubeadm - name: Upgrade k8s master hosts: master become: true tasks: - name: Upgrade kubeadm command: | kubeadm upgrade apply --yes v{{ version }} when: true - name: Upgrade k8s nodes hosts: ingress,nfs,worker,gpu become: true tasks: - name: Upgrade kubeadm command: | kubeadm upgrade node when: true - name: Upgrade and hold packages hosts: master,ingress,nfs,worker,gpu become: true tasks: - name: Upgrade packages apt: name: kubectl={{ version }}*, kubelet={{ version }}* state: present force: true update_cache: true - name: Hold packages dpkg_selections: name: "{{ item }}" selection: hold loop: - kubectl - kubelet - name: Restart kubelet systemd: state: restarted name: kubelet - name: Cleanup old k8s repository file: path: /etc/apt/sources.list.d/pkgs_k8s_io_core_stable_v1_29_deb.list state: absent # pinned by grycap.kubernetes # - name: Upgrade networking # hosts: master # become: true # tasks: # - name: Upgrade weave # shell: | # set -o pipefail # kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')" # environment: # KUBECONFIG: /etc/kubernetes/admin.conf # args: # executable: /bin/bash # when: true