Merge pull request #398 from mattymo/rework_systemd_wait_master

Improve systemd handling and stabilize docker
This commit is contained in:
Smaine Kahlouch 2016-08-03 11:30:14 +02:00 committed by GitHub
commit 15aec7cd87
18 changed files with 77 additions and 128 deletions

View file

@ -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 @@
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

View file

@ -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

View file

@ -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
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

View file

@ -1,4 +1,35 @@
--- ---
- 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

View file

@ -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 @@
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

View file

@ -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]

View file

@ -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

View file

@ -1,8 +1,8 @@
[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

View file

@ -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

View file

@ -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

View file

@ -1,28 +0,0 @@
[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

View file

@ -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

View file

@ -1,10 +1,4 @@
--- ---
- 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 @@
- 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

View file

@ -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"

View file

@ -1,28 +0,0 @@
[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

View file

@ -1,8 +1,8 @@
[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

View file

@ -1,9 +1,7 @@
[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

View file

@ -1,8 +1,8 @@
[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