a5bb24b886
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.
51 lines
1.3 KiB
YAML
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
|