apiVersion: apps/v1 kind: DaemonSet metadata: name: nodelocaldns namespace: kube-system labels: k8s-app: kube-dns kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile spec: selector: matchLabels: k8s-app: nodelocaldns template: metadata: labels: k8s-app: nodelocaldns spec: {% if kube_version is version('v1.11.1', '>=') %} priorityClassName: system-cluster-critical {% endif %} serviceAccountName: nodelocaldns hostNetwork: true dnsPolicy: Default # Don't use cluster DNS. tolerations: - key: node-role.kubernetes.io/master effect: NoSchedule - key: "CriticalAddonsOnly" operator: "Exists" containers: - name: node-cache image: "{{ nodelocaldns_image_repo }}:{{ nodelocaldns_image_tag }}" resources: limits: memory: {{ nodelocaldns_memory_limit }} requests: cpu: {{ nodelocaldns_cpu_requests }} memory: {{ nodelocaldnsdns_memory_requests }} args: [ "-localip", "{{ nodelocaldns_ip }}", "-conf", "/etc/coredns/Corefile" ] securityContext: privileged: true ports: - containerPort: 53 name: dns protocol: UDP - containerPort: 53 name: dns-tcp protocol: TCP - containerPort: 9253 name: metrics protocol: TCP livenessProbe: httpGet: host: {{ nodelocaldns_ip }} path: /health port: 8080 scheme: HTTP initialDelaySeconds: 60 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 3 volumeMounts: - name: config-volume mountPath: /etc/coredns volumes: - name: config-volume configMap: name: nodelocaldns items: - key: Corefile path: Corefile terminationGracePeriodSeconds: 30