Wait for kube-apiserver availability before starting upgrade (#6243)

* Wait for kube-apiserver availability before starting upgrade

I am experiencing a timing issue when upgrading from kubespray
2.11.0(k8s 1.15.3) to kubespray 2.12.6(k8s 1.16.9). The certificates get
replaced in `kubeadm-secondary-legacy.yml` and kube-apiserver notices a mismatch
(for a fraction of a second) between `apiserver.crt` and `apiserver.key`
which causes it to restart. And sometimes ( ~ 1 out of 5 upgrades) the
kube-apiserver isn't back on time for the start of the upgrade task. It
fails when kubeadm checks with the kube-apiserver to start the upgrade. The
kube-apiserver returns a `connect: connection refused`. I have created this
small task to check the availability of the kube-apiserver before starting the
upgrade, so that the upgrade will run without an issue.

Signed-off-by: Rick Haan <rickhaan94@gmail.com>

* Fix markdownlint

* Remove old CI

Co-authored-by: Maxime Guyot <maxime@root314.com>
This commit is contained in:
Rick Haan
2020-06-08 16:25:53 +02:00
committed by GitHub
parent 860bafa62d
commit 5cba8b1614
3 changed files with 12 additions and 68 deletions

View File

@@ -1,4 +1,15 @@
---
- name: "kubeadm | Wait for master kube-apiserver"
uri:
url: "https://{{ kube_apiserver_access_address }}:{{ kube_apiserver_port }}/version"
status_code: 200
validate_certs: false
register: kube_api_server_available
until: kube_api_server_available.status == 200
retries: 180
delay: 1
when: inventory_hostname == groups['kube-master']
- name: kubeadm | Upgrade first master
command: >-
timeout -k 600s 600s