From 2df4b6c5d2e44ea010f1053badf3d415900aaa54 Mon Sep 17 00:00:00 2001 From: Matthew Mosesohn Date: Wed, 31 Jan 2018 00:26:07 +0300 Subject: [PATCH] Rename default_resolver to cloud_resolver (#2209) Cloud resolvers are mandatory for hosts on GCE and OpenStack clouds. The 8.8.8.8 alternative resolver was dropped because there is already a default nameserver. The new var name reflects the purpose better. Also restart apiserver when modifying dns settings. --- roles/kubernetes/preinstall/handlers/main.yml | 17 ++++++++++++++++- .../preinstall/tasks/set_resolv_facts.yml | 12 ++++++------ 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/roles/kubernetes/preinstall/handlers/main.yml b/roles/kubernetes/preinstall/handlers/main.yml index dab1bf7de..3c4fd17d6 100644 --- a/roles/kubernetes/preinstall/handlers/main.yml +++ b/roles/kubernetes/preinstall/handlers/main.yml @@ -5,7 +5,9 @@ - Preinstall | reload network - Preinstall | reload kubelet - Preinstall | kube-controller configured + - Preinstall | kube-apiserver configured - Preinstall | restart kube-controller-manager + - Preinstall | restart kube-apiserver when: not ansible_os_family in ["CoreOS", "Container Linux by CoreOS"] # FIXME(bogdando) https://github.com/projectcalico/felix/issues/1185 @@ -37,14 +39,27 @@ state: restarted notify: - Preinstall | kube-controller configured + - Preinstall | kube-apiserver configured - Preinstall | restart kube-controller-manager + - Preinstall | restart kube-apiserver when: not dns_early|bool +# FIXME(mattymo): Also restart for kubeadm mode +- name: Preinstall | kube-apiserver configured + stat: path="{{ kube_manifest_dir }}/kube-apiserver.manifest" + register: kube_apiserver_set + when: inventory_hostname in groups['kube-master'] and dns_mode != 'none' and resolvconf_mode == 'host_resolvconf' + +# FIXME(mattymo): Also restart for kubeadm mode - name: Preinstall | kube-controller configured stat: path="{{ kube_manifest_dir }}/kube-controller-manager.manifest" register: kube_controller_set when: inventory_hostname in groups['kube-master'] and dns_mode != 'none' and resolvconf_mode == 'host_resolvconf' - name: Preinstall | restart kube-controller-manager - shell: "docker ps -f name=k8s_kube-controller-manager* -q | xargs --no-run-if-empty docker rm -f" + shell: "docker ps -f name=k8s_POD_kube-controller-manager* -q | xargs --no-run-if-empty docker rm -f" when: inventory_hostname in groups['kube-master'] and dns_mode != 'none' and resolvconf_mode == 'host_resolvconf' and kube_controller_set.stat.exists + +- name: Preinstall | restart kube-apiserver + shell: "docker ps -f name=k8s_POD_kube-apiserver* -q | xargs --no-run-if-empty docker rm -f" + when: inventory_hostname in groups['kube-master'] and dns_mode != 'none' and resolvconf_mode == 'host_resolvconf' diff --git a/roles/kubernetes/preinstall/tasks/set_resolv_facts.yml b/roles/kubernetes/preinstall/tasks/set_resolv_facts.yml index b13d49b07..fdc46125e 100644 --- a/roles/kubernetes/preinstall/tasks/set_resolv_facts.yml +++ b/roles/kubernetes/preinstall/tasks/set_resolv_facts.yml @@ -15,13 +15,13 @@ {% for d in [ 'default.svc.' + dns_domain, 'svc.' + dns_domain ] + searchdomains|default([]) -%} {{dns_domain}}.{{d}}./{{d}}.{{d}}./com.{{d}}./ {%- endfor %} - default_resolver: >- + cloud_resolver: >- {%- if cloud_provider is defined and cloud_provider == 'gce' -%} - 169.254.169.254 + ['169.254.169.254'] {%- elif cloud_provider is defined and cloud_provider == 'aws' -%} - 169.254.169.253 + ['169.254.169.253'] {%- else -%} - 8.8.8.8 + [] {%- endif -%} - name: check if kubelet is configured @@ -106,6 +106,6 @@ - name: generate nameservers to resolvconf set_fact: nameserverentries: - nameserver {{( dnsmasq_server + nameservers|default([default_resolver])) | join(',nameserver ')}} + nameserver {{( dnsmasq_server + nameservers|d([]) + cloud_resolver|d([])) | join(',nameserver ')}} supersede_nameserver: - supersede domain-name-servers {{( dnsmasq_server + nameservers|default([default_resolver])) | join(', ') }}; + supersede domain-name-servers {{( dnsmasq_server + nameservers|d([]) + cloud_resolver|d([])) | join(', ') }};