From f73717ea35028a385a936d63f86ec7a56256fca5 Mon Sep 17 00:00:00 2001 From: Matthew Mosesohn Date: Thu, 12 Apr 2018 22:55:13 +0300 Subject: [PATCH] Mount local volume provisioner dirs for containerized kubelet (#2648) --- .../node/templates/kubelet-container.j2 | 4 ++++ .../node/templates/kubelet.rkt.service.j2 | 16 ++++++++++++++++ roles/kubernetes/preinstall/tasks/main.yml | 14 ++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/roles/kubernetes/node/templates/kubelet-container.j2 b/roles/kubernetes/node/templates/kubelet-container.j2 index 75e07ca27..dcf86c327 100644 --- a/roles/kubernetes/node/templates/kubelet-container.j2 +++ b/roles/kubernetes/node/templates/kubelet-container.j2 @@ -29,6 +29,10 @@ {% if '/var/lib/kubelet' not in kubelet_flexvolumes_plugins_dir %} -v {{ kubelet_flexvolumes_plugins_dir }}:{{ kubelet_flexvolumes_plugins_dir }}:rw \ {% endif -%} + {% if local_volume_provisioner_enabled -%} + -v {{ local_volume_provisioner_base_dir }}:{{ local_volume_provisioner_base_dir }}:rw \ + -v {{ local_volume_provisioner_mount_dir }}:{{ local_volume_provisioner_mount_dir }}:rw \ + {% endif %} -v {{kube_config_dir}}:{{kube_config_dir}}:ro \ -v /etc/os-release:/etc/os-release:ro \ {{ hyperkube_image_repo }}:{{ hyperkube_image_tag}} \ diff --git a/roles/kubernetes/node/templates/kubelet.rkt.service.j2 b/roles/kubernetes/node/templates/kubelet.rkt.service.j2 index 283ce1ad9..13cd9daae 100644 --- a/roles/kubernetes/node/templates/kubelet.rkt.service.j2 +++ b/roles/kubernetes/node/templates/kubelet.rkt.service.j2 @@ -43,6 +43,14 @@ ExecStart=/usr/bin/rkt run \ {% if '/var/lib/kubelet' not in kubelet_flexvolumes_plugins_dir %} --volume flexvolumes,kind=host,source={{ kubelet_flexvolumes_plugins_dir }},readOnly=false \ {% endif %} +{% if local_volume_provisioner_enabled %} + --volume local_volume_provisioner_base_dir,kind=host,source={{ local_volume_provisioner_base_dir }},readOnly=false \ +{# Not pretty, but needed to avoid double mount #} +{% if local_volume_provisioner_base_dir not in local_volume_provisioner_mount_dir and local_volume_provisioner_mount_dir not in local_volume_provisioner_base_dir %} + --volume local_volume_provisioner_mount_dir,kind=host,source={{ local_volume_provisioner_mount_dir }},readOnly=false \ +{% endif %} +{% endif %} + {% if kubelet_load_modules == true %} --mount volume=modprobe,target=/usr/sbin/modprobe \ --mount volume=lib-modules,target=/lib/modules \ @@ -69,6 +77,14 @@ ExecStart=/usr/bin/rkt run \ {% if '/var/lib/kubelet' not in kubelet_flexvolumes_plugins_dir %} --mount volume=flexvolumes,target={{ kubelet_flexvolumes_plugins_dir }} \ {% endif %} +{% if local_volume_provisioner_enabled %} + --mount local_volume_provisioner_base_dir,target={{ local_volume_provisioner_base_dir }} \ +{# Not pretty, but needed to avoid double mount #} +{% if local_volume_provisioner_base_dir not in local_volume_provisioner_mount_dir and local_volume_provisioner_mount_dir not in local_volume_provisioner_base_dir %} + --volume local_volume_provisioner_mount_dir,target={{ local_volume_provisioner_mount_dir }} \ +{% endif %} +{% endif %} + --stage1-from-dir=stage1-fly.aci \ {% if kube_hyperkube_image_repo == "docker" %} --insecure-options=image \ diff --git a/roles/kubernetes/preinstall/tasks/main.yml b/roles/kubernetes/preinstall/tasks/main.yml index cd5dd7acd..e3d56ac0c 100644 --- a/roles/kubernetes/preinstall/tasks/main.yml +++ b/roles/kubernetes/preinstall/tasks/main.yml @@ -96,6 +96,20 @@ - contiv - bootstrap-os +- name: Create local volume provisioner directories + file: + path: "{{ item }}" + state: directory + owner: kube + with_items: + - "{{ local_volume_provisioner_base_dir }}" + - "{{ local_volume_provisioner_mount_dir }}" + when: + - inventory_hostname in groups['k8s-cluster'] + - local_volume_provisioner_enabled + tags: + - persistent_volumes + - import_tasks: resolvconf.yml when: - dns_mode != 'none'