c12s-kubespray/roles/network_plugin/flannel/handlers/main.yml
Josh Lothian 806f12804b Fix docker restart in atomic
In atomic, containers are left running when docker is restarted.
When docker is restarted after the flannel config is put in place,
the docker0 interface isn't re-IPed because docker sees the running
containers and won't update the previous config.

This patch kills all the running containers after docker is stopped.
We can't simply `docker stop` the running containers, as they respawn
before we've got a chance to stop the docker daemon, so we need to
use runc to do this after dockerd is stopped.
2017-05-17 14:31:49 -05:00

51 lines
1.3 KiB
YAML

---
- name: Flannel | delete default docker bridge
command: ip link delete docker0
failed_when: false
notify: Flannel | restart docker
- name: Flannel | restart docker
command: /bin/true
notify:
- Flannel | reload systemd
- Flannel | reload docker.socket
- Flannel | reload docker
- Flannel | reload docker (atomic)
- Flannel | pause while Docker restarts
- Flannel | wait for docker
- name : Flannel | reload systemd
shell: systemctl daemon-reload
- name: Flannel | reload docker.socket
service:
name: docker.socket
state: restarted
when: ansible_os_family in ['CoreOS', 'Container Linux by CoreOS']
- name: Flannel | reload docker
service:
name: docker
state: restarted
when: not is_atomic
- name: Flannel | reload docker (atomic)
shell: systemctl stop docker && runc list | awk '!/ID/ {print $1}' | xargs -n 1 -I ID runc kill ID KILL && systemctl start docker
when: is_atomic
- name: Flannel | pause while Docker restarts
pause:
seconds: 10
prompt: "Waiting for docker restart"
- name: Flannel | wait for docker
command: "{{ docker_bin_dir }}/docker images"
register: docker_ready
retries: 10
delay: 5
until: docker_ready.rc == 0
- name: Flannel | reload kubelet
service:
name: kubelet
state: restarted