Browse Source
Merge pull request #1029 from mattymo/graceful
Merge pull request #1029 from mattymo/graceful
Add graceful upgrade processpull/1048/head
committed by
GitHub
7 changed files with 158 additions and 34 deletions
Split View
Diff Options
-
19.gitlab-ci.yml
-
16docs/upgrades.md
-
9roles/kubernetes-apps/network_plugin/weave/tasks/main.yml
-
5roles/upgrade/post-upgrade/tasks/main.yml
-
12roles/upgrade/pre-upgrade/tasks/main.yml
-
39tests/templates/inventory-gce.j2
-
92upgrade-cluster.yml
@ -0,0 +1,5 @@ |
|||
--- |
|||
|
|||
- name: Uncordon node |
|||
command: "{{ bin_dir }}/kubectl uncordon {{ ansible_hostname }}" |
|||
delegate_to: "{{ groups['kube-master'][0] }}" |
@ -0,0 +1,12 @@ |
|||
--- |
|||
|
|||
- name: Cordon node |
|||
command: "{{ bin_dir }}/kubectl cordon {{ ansible_hostname }}" |
|||
delegate_to: "{{ groups['kube-master'][0] }}" |
|||
|
|||
- name: Drain node |
|||
command: "{{ bin_dir }}/kubectl drain --force --ignore-daemonsets --grace-period 30 --delete-local-data {{ ansible_hostname }}" |
|||
delegate_to: "{{ groups['kube-master'][0] }}" |
|||
|
|||
- name: Sleep for grace period for draining |
|||
pause: seconds=30 |
@ -0,0 +1,92 @@ |
|||
--- |
|||
- hosts: localhost |
|||
gather_facts: False |
|||
roles: |
|||
- bastion-ssh-config |
|||
tags: [localhost, bastion] |
|||
|
|||
- hosts: k8s-cluster:etcd:calico-rr |
|||
any_errors_fatal: true |
|||
gather_facts: false |
|||
vars: |
|||
# Need to disable pipelining for bootstrap-os as some systems have requiretty in sudoers set, which makes pipelining |
|||
# fail. bootstrap-os fixes this on these systems, so in later plays it can be enabled. |
|||
ansible_ssh_pipelining: false |
|||
roles: |
|||
- bootstrap-os |
|||
tags: |
|||
- bootstrap-os |
|||
|
|||
- hosts: k8s-cluster:etcd:calico-rr |
|||
any_errors_fatal: true |
|||
vars: |
|||
ansible_ssh_pipelining: true |
|||
gather_facts: true |
|||
|
|||
- hosts: k8s-cluster:etcd:calico-rr |
|||
any_errors_fatal: true |
|||
roles: |
|||
- { role: kernel-upgrade, tags: kernel-upgrade, when: kernel_upgrade is defined and kernel_upgrade } |
|||
- { role: kubernetes/preinstall, tags: preinstall } |
|||
- { role: docker, tags: docker } |
|||
- role: rkt |
|||
tags: rkt |
|||
when: "'rkt' in [etcd_deployment_type, kubelet_deployment_type, vault_deployment_type]" |
|||
|
|||
- hosts: etcd:k8s-cluster:vault |
|||
any_errors_fatal: true |
|||
roles: |
|||
- { role: vault, tags: vault, vault_bootstrap: true, when: "cert_management == 'vault'" } |
|||
|
|||
- hosts: etcd:!k8s-cluster |
|||
any_errors_fatal: true |
|||
roles: |
|||
- { role: etcd, tags: etcd } |
|||
|
|||
- hosts: k8s-cluster |
|||
any_errors_fatal: true |
|||
roles: |
|||
- { role: etcd, tags: etcd } |
|||
|
|||
- hosts: etcd:k8s-cluster:vault |
|||
any_errors_fatal: true |
|||
roles: |
|||
- { role: vault, tags: vault, when: "cert_management == 'vault'"} |
|||
|
|||
#Handle upgrades to master components first to maintain backwards compat. |
|||
- hosts: kube-master |
|||
any_errors_fatal: true |
|||
serial: 1 |
|||
roles: |
|||
- { role: upgrade/pre-upgrade, tags: pre-upgrade } |
|||
- { role: kubernetes/node, tags: node } |
|||
- { role: kubernetes/master, tags: master } |
|||
- { role: network_plugin, tags: network } |
|||
- { role: upgrade/post-upgrade, tags: post-upgrade } |
|||
|
|||
#Finally handle worker upgrades, based on given batch size |
|||
- hosts: kube-node:!kube-master |
|||
any_errors_fatal: true |
|||
serial: "{{ serial | default('20%') }}" |
|||
roles: |
|||
- { role: upgrade/pre-upgrade, tags: pre-upgrade } |
|||
- { role: kubernetes/node, tags: node } |
|||
- { role: network_plugin, tags: network } |
|||
- { role: upgrade/post-upgrade, tags: post-upgrade } |
|||
- { role: kubernetes-apps/network_plugin, tags: network } |
|||
|
|||
- hosts: calico-rr |
|||
any_errors_fatal: true |
|||
roles: |
|||
- { role: network_plugin/calico/rr, tags: network } |
|||
|
|||
- hosts: k8s-cluster |
|||
any_errors_fatal: true |
|||
roles: |
|||
- { role: dnsmasq, when: "dns_mode == 'dnsmasq_kubedns'", tags: dnsmasq } |
|||
- { role: kubernetes/preinstall, when: "dns_mode != 'none' and resolvconf_mode == 'host_resolvconf'", tags: resolvconf } |
|||
|
|||
- hosts: kube-master[0] |
|||
any_errors_fatal: true |
|||
roles: |
|||
- { role: kubernetes-apps, tags: apps } |
Write
Preview
Loading…
Cancel
Save