--- - name: "Pre-upgrade | etcd3 upgrade | see if old config exists" command: "{{ bin_dir }}/etcdctl --peers={{ etcd_access_addresses }} ls /registry/minions" environment: ETCDCTL_API: 2 ETCDCTL_CERT_FILE: "{{ etcd_cert_dir }}/node-{{ inventory_hostname }}.pem" ETCDCTL_KEY_FILE: "{{ etcd_cert_dir }}/node-{{ inventory_hostname }}-key.pem" register: old_data_exists delegate_to: "{{groups['etcd'][0]}}" changed_when: false when: kube_apiserver_storage_backend == "etcd3" failed_when: false - name: "Pre-upgrade | etcd3 upgrade | use etcd2 unless forced to etcd3" set_fact: kube_apiserver_storage_backend: "etcd2" when: old_data_exists.rc == 0 and not force_etcd3|bool - name: "Pre-upgrade | Delete master manifests" file: path: "/etc/kubernetes/manifests/{{item}}.manifest" state: absent with_items: - ["kube-apiserver", "kube-controller-manager", "kube-scheduler"] register: kube_apiserver_manifest_replaced when: (secret_changed|default(false) or etcd_secret_changed|default(false)) - name: "Pre-upgrade | Delete master containers forcefully" shell: "docker ps -af name=k8s_{{item}}* -q | xargs --no-run-if-empty docker rm -f" with_items: - ["kube-apiserver", "kube-controller-manager", "kube-scheduler"] when: kube_apiserver_manifest_replaced.changed register: remove_master_container retries: 4 until: remove_master_container.rc == 0 delay: 5