Add support for running a nodelocal dns cache (#3861)

* Add support for running a nodelocal dns cache

After encountering dns issues in a cluster I was recently working on I
noticed Kubernetes 1.13 introduced support for running a nodelocal dns
cache.

I believe this can usefull for more people.

73b548db06
https://github.com/kubernetes/enhancements/blob/master/keps/sig-network/0030-nodelocal-dns-cache.md

* Add requested changes

* Add additional requested changes + documentation

* Add requested changes after review

* Replace incorrect variable
This commit is contained in:
Thomas Nys
2018-12-11 02:28:03 +01:00
committed by Kubernetes Prow Robot
parent 7b674e0607
commit 3e3ee0aeb1
12 changed files with 223 additions and 0 deletions

View File

@@ -13,6 +13,19 @@
tags:
- upgrade
- name: Kubernetes Apps | Delete old nodelocalDNS resources
kube:
name: "nodelocaldns"
namespace: "kube-system"
kubectl: "{{ bin_dir }}/kubectl"
resource: "{{ item }}"
state: absent
with_items:
- 'deamonset'
- 'configmap'
tags:
- upgrade
- name: Kubernetes Apps | Delete kubeadm CoreDNS
kube:
name: "coredns"

View File

@@ -20,6 +20,7 @@
- dnsmasq
- coredns
- kubedns
- nodelocaldns
- name: Kubernetes Apps | CoreDNS
import_tasks: "tasks/coredns.yml"
@@ -29,6 +30,14 @@
tags:
- coredns
- name: Kubernetes Apps | nodelocalDNS
import_tasks: "tasks/nodelocaldns.yml"
when:
- enable_nodelocaldns == True
- inventory_hostname == groups['kube-master'] | first
tags:
- nodelocaldns
- name: Kubernetes Apps | KubeDNS
import_tasks: "tasks/kubedns.yml"
when:
@@ -49,6 +58,7 @@
- "{{ kubedns_manifests.results | default({}) }}"
- "{{ coredns_manifests.results | default({}) }}"
- "{{ coredns_secondary_manifests.results | default({}) }}"
- "{{ nodelocaldns_manifests.results | default({}) }}"
when:
- dns_mode != 'none'
- inventory_hostname == groups['kube-master'][0]
@@ -61,6 +71,7 @@
- dnsmasq
- coredns
- kubedns
- nodelocaldns
loop_control:
label: "{{ item.item.file }}"

View File

@@ -0,0 +1,18 @@
---
- name: Kubernetes Apps | Lay Down nodelocaldns Template
template:
src: "{{ item.file }}.j2"
dest: "{{ kube_config_dir }}/{{ item.file }}"
with_items:
- { name: nodelocaldns, file: nodelocaldns-config.yml, type: configmap }
- { name: nodelocaldns, file: nodelocaldns-sa.yml, type: sa }
- { name: nodelocaldns, file: nodelocaldns-deamonset.yml, type: daemonset }
register: nodelocaldns_manifests
vars:
clusterIP: "{{ skydns_server }}"
secondaryclusterIP: "{{ skydns_server_secondary }}"
when:
- enable_nodelocaldns == True
- inventory_hostname == groups['kube-master'] | first
tags:
- nodelocaldns