Skip to content
Snippets Groups Projects
Commit 15aec7cd authored by Smaine Kahlouch's avatar Smaine Kahlouch Committed by GitHub
Browse files

Merge pull request #398 from mattymo/rework_systemd_wait_master

Improve systemd handling and stabilize docker
parents b5d3f9b2 e3825838
No related branches found
No related tags found
No related merge requests found
Showing
with 77 additions and 128 deletions
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
notify: notify:
- Docker | reload systemd - Docker | reload systemd
- Docker | reload docker - Docker | reload docker
- Docker | pause while Docker restarts
- Docker | wait for docker
- name : Docker | reload systemd - name : Docker | reload systemd
shell: systemctl daemon-reload shell: systemctl daemon-reload
...@@ -13,3 +15,13 @@ ...@@ -13,3 +15,13 @@
service: service:
name: docker name: docker
state: restarted state: restarted
- name: Docker | pause while Docker restarts
pause: seconds=10 prompt="Waiting for docker restart"
- name: Docker | wait for docker
command: /usr/bin/docker images
register: docker_ready
retries: 10
delay: 5
until: docker_ready.rc == 0
...@@ -59,6 +59,14 @@ ...@@ -59,6 +59,14 @@
when: ansible_service_mgr == "systemd" and when: ansible_service_mgr == "systemd" and
(http_proxy is defined or https_proxy is defined or no_proxy is defined) (http_proxy is defined or https_proxy is defined or no_proxy is defined)
- name: Write docker.service systemd file
template:
src: systemd-docker.service.j2
dest: /etc/systemd/system/docker.service
register: docker_service_file
notify: restart docker
when: ansible_service_mgr == "systemd" and ansible_os_family != "CoreOS"
- meta: flush_handlers - meta: flush_handlers
- name: ensure docker service is started and enabled - name: ensure docker service is started and enabled
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
Description=Docker Application Container Engine Description=Docker Application Container Engine
Documentation=http://docs.docker.com Documentation=http://docs.docker.com
{% if ansible_os_family == "RedHat" %} {% if ansible_os_family == "RedHat" %}
After=network.target After=network.target docker-storage-setup.service
Wants=docker-storage-setup.service Wants=docker-storage-setup.service
{% elif ansible_os_family == "Debian" %} {% elif ansible_os_family == "Debian" %}
After=network.target docker.socket After=network.target docker.socket
Requires=docker.socket Wants=docker.socket
{% endif %} {% endif %}
[Service] [Service]
...@@ -20,17 +20,21 @@ EnvironmentFile=-/etc/sysconfig/docker-storage ...@@ -20,17 +20,21 @@ EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/default/docker EnvironmentFile=-/etc/default/docker
{% endif %} {% endif %}
Environment=GOTRACEBACK=crash Environment=GOTRACEBACK=crash
ExecReload=/bin/kill -s HUP $MAINPID
Delegate=yes
KillMode=process
ExecStart=/usr/bin/docker daemon \ ExecStart=/usr/bin/docker daemon \
$OPTIONS \ $OPTIONS \
$DOCKER_STORAGE_OPTIONS \ $DOCKER_STORAGE_OPTIONS \
$DOCKER_NETWORK_OPTIONS \ $DOCKER_NETWORK_OPTIONS \
$INSECURE_REGISTRY \ $INSECURE_REGISTRY \
$DOCKER_OPTS $DOCKER_OPTS
TasksMax=infinity
LimitNOFILE=1048576 LimitNOFILE=1048576
LimitNPROC=1048576 LimitNPROC=1048576
LimitCORE=infinity LimitCORE=infinity
MountFlags=slave
TimeoutStartSec=1min TimeoutStartSec=1min
Restart=on-abnormal
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
--- ---
- name: restart kube-apiserver - name: Master | restart kubelet
set_fact: command: /bin/true
restart_apimaster: True notify:
- Kubelet | reload systemd
- Kubelet | reload kubelet
- name: wait for master static pods
command: /bin/true
notify:
- wait for kube-scheduler
- wait for kube-controller-manager
- name: Master | reload systemd
command: systemctl daemon-reload
when: ansible_service_mgr == "systemd"
- name: Master | reload kubelet
service:
name: kubelet
state: restarted
- name: wait for kube-scheduler
uri: url=http://localhost:10251/healthz
register: scheduler_result
until: scheduler_result.status == 200
retries: 15
delay: 5
- name: wait for kube-controller-manager
uri: url=http://localhost:10252/healthz
register: controller_manager_result
until: controller_manager_result.status == 200
retries: 15
delay: 5
...@@ -19,12 +19,7 @@ ...@@ -19,12 +19,7 @@
src: manifests/kube-apiserver.manifest.j2 src: manifests/kube-apiserver.manifest.j2
dest: "{{ kube_manifest_dir }}/kube-apiserver.manifest" dest: "{{ kube_manifest_dir }}/kube-apiserver.manifest"
register: apiserver_manifest register: apiserver_manifest
notify: Master | restart kubelet
- name: restart kubelet
service:
name: kubelet
state: restarted
when: apiserver_manifest.changed
- name: wait for the apiserver to be running - name: wait for the apiserver to be running
uri: url=http://localhost:8080/healthz uri: url=http://localhost:8080/healthz
...@@ -58,8 +53,10 @@ ...@@ -58,8 +53,10 @@
template: template:
src: manifests/kube-controller-manager.manifest.j2 src: manifests/kube-controller-manager.manifest.j2
dest: "{{ kube_manifest_dir }}/kube-controller-manager.manifest" dest: "{{ kube_manifest_dir }}/kube-controller-manager.manifest"
notify: wait for kube-controller-manager
- name: Write kube-scheduler manifest - name: Write kube-scheduler manifest
template: template:
src: manifests/kube-scheduler.manifest.j2 src: manifests/kube-scheduler.manifest.j2
dest: "{{ kube_manifest_dir }}/kube-scheduler.manifest" dest: "{{ kube_manifest_dir }}/kube-scheduler.manifest"
notify: wait for kube-scheduler
...@@ -2,9 +2,11 @@ ...@@ -2,9 +2,11 @@
Description=Kubernetes Kubelet Server Description=Kubernetes Kubelet Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes Documentation=https://github.com/GoogleCloudPlatform/kubernetes
{% if kube_network_plugin is defined and kube_network_plugin == "calico" %} {% if kube_network_plugin is defined and kube_network_plugin == "calico" %}
After=docker.service calico-node.service After=docker.service docker.socket calico-node.service
Wants=docker.socket calico-node.service
{% else %} {% else %}
After=docker.service After=docker.service
Wants=docker.socket
{% endif %} {% endif %}
[Service] [Service]
......
...@@ -10,13 +10,6 @@ ...@@ -10,13 +10,6 @@
- restart docker - restart docker
when: ansible_os_family != "CoreOS" when: ansible_os_family != "CoreOS"
- name: Calico | Write docker.service systemd file
template:
src: systemd-docker.service
dest: /lib/systemd/system/docker.service
notify: restart docker
when: ansible_service_mgr == "systemd" and ansible_os_family != "CoreOS"
- meta: flush_handlers - meta: flush_handlers
- name: Calico | Install calicoctl container script - name: Calico | Install calicoctl container script
......
[Unit] [Unit]
Description=Calico per-node agent Description=Calico per-node agent
Documentation=https://github.com/projectcalico/calico-docker Documentation=https://github.com/projectcalico/calico-docker
After=docker.service etcd-proxy.service After=docker.service docker.socket etcd-proxy.service
Wants=docker.socket Wants=docker.socket etcd-proxy.service
[Service] [Service]
User=root User=root
......
...@@ -4,22 +4,6 @@ ...@@ -4,22 +4,6 @@
ignore_errors: yes ignore_errors: yes
notify: restart docker notify: restart docker
- name: restart docker
command: /bin/true
notify:
- Flannel | reload systemd
- Flannel | reload docker
- Flannel | reload kubelet
- name : Flannel | reload systemd
shell: systemctl daemon-reload
when: ansible_service_mgr == "systemd"
- name: Flannel | reload docker
service:
name: docker
state: restarted
- name: Flannel | reload kubelet - name: Flannel | reload kubelet
service: service:
name: kubelet name: kubelet
......
...@@ -50,11 +50,4 @@ ...@@ -50,11 +50,4 @@
state: link state: link
when: ansible_os_family == "CoreOS" when: ansible_os_family == "CoreOS"
- name: Flannel | Write docker.service systemd file
template:
src: systemd-docker.service
dest: /lib/systemd/system/docker.service
notify: restart docker
when: ansible_service_mgr == "systemd" and ansible_os_family != "CoreOS"
- meta: flush_handlers - meta: flush_handlers
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
{% if ansible_os_family == "RedHat" %}
After=network.target
Wants=docker-storage-setup.service
{% elif ansible_os_family == "Debian" %}
After=network.target docker.socket
Requires=docker.socket
{% endif %}
[Service]
Type=notify
EnvironmentFile=-/etc/default/docker
Environment=GOTRACEBACK=crash
ExecStart=/usr/bin/docker daemon \
$OPTIONS \
$DOCKER_STORAGE_OPTIONS \
$DOCKER_NETWORK_OPTIONS \
$INSECURE_REGISTRY
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
MountFlags=slave
TimeoutStartSec=1min
[Install]
WantedBy=multi-user.target
...@@ -6,3 +6,4 @@ dependencies: ...@@ -6,3 +6,4 @@ dependencies:
when: kube_network_plugin == 'flannel' when: kube_network_plugin == 'flannel'
- role: network_plugin/weave - role: network_plugin/weave
when: kube_network_plugin == 'weave' when: kube_network_plugin == 'weave'
- role: docker
--- ---
- name: Weave | restart docker
command: /bin/true
notify:
- Weave | reload systemd
- Weave | reload docker
- name: restart weave - name: restart weave
command: /bin/true command: /bin/true
notify: notify:
...@@ -27,11 +21,6 @@ ...@@ -27,11 +21,6 @@
- Weave | reload systemd - Weave | reload systemd
- reload weaveexpose - reload weaveexpose
- name: Weave | reload docker
service:
name: docker
state: restarted
- name: reload weave - name: reload weave
service: service:
name: weave name: weave
......
...@@ -7,14 +7,7 @@ ...@@ -7,14 +7,7 @@
group: root group: root
mode: 0644 mode: 0644
notify: notify:
- Weave | restart docker - restart docker
- name: Write docker.service systemd file
template:
src: systemd-docker.service
dest: /lib/systemd/system/docker.service
notify: Weave | restart docker
when: ansible_service_mgr == "systemd" and ansible_os_family != "CoreOS"
- name: Weave | Install weave - name: Weave | Install weave
command: rsync -piu "{{ local_release_dir }}/weave/bin/weave" "{{ bin_dir }}/weave" command: rsync -piu "{{ local_release_dir }}/weave/bin/weave" "{{ bin_dir }}/weave"
......
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
{% if ansible_os_family == "RedHat" %}
After=network.target
Wants=docker-storage-setup.service
{% elif ansible_os_family == "Debian" %}
After=network.target docker.socket
Requires=docker.socket
{% endif %}
[Service]
Type=notify
EnvironmentFile=-/etc/default/docker
Environment=GOTRACEBACK=crash
ExecStart=/usr/bin/docker daemon \
$OPTIONS \
$DOCKER_STORAGE_OPTIONS \
$DOCKER_NETWORK_OPTIONS \
$INSECURE_REGISTRY
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
MountFlags=slave
TimeoutStartSec=1min
[Install]
WantedBy=multi-user.target
[Unit] [Unit]
Description=Weave Network Description=Weave Network
Documentation=http://docs.weave.works/weave/latest_release/ Documentation=http://docs.weave.works/weave/latest_release/
Requires=docker.service Wants=docker.socket
After=docker.service After=docker.service docker.socket
[Service] [Service]
EnvironmentFile=-/etc/weave.env EnvironmentFile=-/etc/weave.env
......
[Unit] [Unit]
Documentation=http://docs.weave.works/ Documentation=http://docs.weave.works/
Requires=docker.service Wants=docker.socket weave.service
Requires=weave.service After=docker.service docker.socket weave.service
After=weave.service
After=docker.service
[Service] [Service]
Type=oneshot Type=oneshot
......
[Unit] [Unit]
Description=Weave proxy for Docker API Description=Weave proxy for Docker API
Documentation=http://docs.weave.works/ Documentation=http://docs.weave.works/
Requires=docker.service Wants=docker.socket
After=docker.service After=docker.service docker.socket
[Service] [Service]
EnvironmentFile=-/etc/weave.%H.env EnvironmentFile=-/etc/weave.%H.env
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment