Browse Source
Merge pull request #2462 from woopstar/coredns-patch
Merge pull request #2462 from woopstar/coredns-patch
Add CoreDNS supportpull/2486/merge
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 365 additions and 66 deletions
Split View
Diff Options
-
8docs/dns-stack.md
-
7docs/vars.md
-
3inventory/sample/group_vars/k8s-cluster.yml
-
6roles/docker/tasks/set_facts_dns.yml
-
17roles/download/defaults/main.yml
-
3roles/kubernetes-apps/ansible/defaults/main.yml
-
54roles/kubernetes-apps/ansible/tasks/cleanup_dns.yml
-
39roles/kubernetes-apps/ansible/tasks/coredns.yml
-
41roles/kubernetes-apps/ansible/tasks/kubedns.yml
-
69roles/kubernetes-apps/ansible/tasks/main.yml
-
19roles/kubernetes-apps/ansible/templates/coredns-clusterrole.yml.j2
-
18roles/kubernetes-apps/ansible/templates/coredns-clusterrolebinding.yml.j2
-
22roles/kubernetes-apps/ansible/templates/coredns-config.yml.j2
-
81roles/kubernetes-apps/ansible/templates/coredns-deployment.yml.j2
-
9roles/kubernetes-apps/ansible/templates/coredns-sa.yml.j2
-
22roles/kubernetes-apps/ansible/templates/coredns-svc.yml.j2
-
4roles/kubernetes/node/templates/kubelet.kubeadm.env.j2
-
4roles/kubernetes/node/templates/kubelet.standard.env.j2
-
4roles/kubernetes/preinstall/tasks/set_resolv_facts.yml
-
1roles/kubespray-defaults/defaults/main.yaml
@ -0,0 +1,54 @@ |
|||
--- |
|||
- name: Kubernetes Apps | Delete old CoreDNS resources |
|||
kube: |
|||
name: "coredns" |
|||
namespace: "{{ system_namespace }}" |
|||
kubectl: "{{ bin_dir }}/kubectl" |
|||
resource: "{{ item }}" |
|||
state: absent |
|||
with_items: |
|||
- 'deploy' |
|||
- 'configmap' |
|||
- 'svc' |
|||
tags: |
|||
- upgrade |
|||
|
|||
- name: Kubernetes Apps | Delete kubeadm CoreDNS |
|||
kube: |
|||
name: "coredns" |
|||
namespace: "{{ system_namespace }}" |
|||
kubectl: "{{ bin_dir }}/kubectl" |
|||
resource: "deploy" |
|||
state: absent |
|||
when: |
|||
- kubeadm_enabled|default(false) |
|||
- kubeadm_init.changed|default(false) |
|||
- inventory_hostname == groups['kube-master'][0] |
|||
|
|||
- name: Kubernetes Apps | Delete old KubeDNS resources |
|||
kube: |
|||
name: "kube-dns" |
|||
namespace: "{{ system_namespace }}" |
|||
kubectl: "{{ bin_dir }}/kubectl" |
|||
resource: "{{ item }}" |
|||
state: absent |
|||
with_items: |
|||
- 'deploy' |
|||
- 'svc' |
|||
tags: |
|||
- upgrade |
|||
|
|||
- name: Kubernetes Apps | Delete kubeadm KubeDNS |
|||
kube: |
|||
name: "kube-dns" |
|||
namespace: "{{ system_namespace }}" |
|||
kubectl: "{{ bin_dir }}/kubectl" |
|||
resource: "{{ item }}" |
|||
state: absent |
|||
with_items: |
|||
- 'deploy' |
|||
- 'svc' |
|||
when: |
|||
- kubeadm_enabled|default(false) |
|||
- kubeadm_init.changed|default(false) |
|||
- inventory_hostname == groups['kube-master'][0] |
@ -0,0 +1,39 @@ |
|||
--- |
|||
- name: Kubernetes Apps | Lay Down CoreDNS Template |
|||
template: |
|||
src: "{{ item.file }}.j2" |
|||
dest: "{{ kube_config_dir }}/{{ item.file }}" |
|||
with_items: |
|||
- { name: coredns, file: coredns-config.yml, type: configmap } |
|||
- { name: coredns, file: coredns-sa.yml, type: sa } |
|||
- { name: coredns, file: coredns-deployment.yml, type: deployment } |
|||
- { name: coredns, file: coredns-svc.yml, type: svc } |
|||
- { name: coredns, file: coredns-clusterrole.yml, type: clusterrole } |
|||
- { name: coredns, file: coredns-clusterrolebinding.yml, type: clusterrolebinding } |
|||
register: coredns_manifests |
|||
vars: |
|||
clusterIP: "{{ skydns_server }}" |
|||
when: |
|||
- dns_mode in ['coredns', 'coredns_dual'] |
|||
- inventory_hostname == groups['kube-master'][0] |
|||
- rbac_enabled or item.type not in rbac_resources |
|||
tags: |
|||
- coredns |
|||
|
|||
- name: Kubernetes Apps | Lay Down Secondary CoreDNS Template |
|||
template: |
|||
src: "{{ item.src }}.j2" |
|||
dest: "{{ kube_config_dir }}/{{ item.file }}" |
|||
with_items: |
|||
- { name: coredns, src: coredns-deployment.yml, file: coredns-deployment-secondary.yml, type: deployment } |
|||
- { name: coredns, src: coredns-svc.yml, file: coredns-svc-secondary.yml, type: svc } |
|||
register: coredns_secondary_manifests |
|||
vars: |
|||
clusterIP: "{{ skydns_server_secondary }}" |
|||
coredns_ordinal_suffix: "-secondary" |
|||
when: |
|||
- dns_mode == 'coredns_dual' |
|||
- inventory_hostname == groups['kube-master'][0] |
|||
- rbac_enabled or item.type not in rbac_resources |
|||
tags: |
|||
- coredns |
@ -0,0 +1,41 @@ |
|||
--- |
|||
|
|||
- name: Kubernetes Apps | Lay Down KubeDNS Template |
|||
template: |
|||
src: "{{ item.file }}.j2" |
|||
dest: "{{ kube_config_dir }}/{{ item.file }}" |
|||
with_items: |
|||
- { name: kube-dns, file: kubedns-sa.yml, type: sa } |
|||
- { name: kube-dns, file: kubedns-deploy.yml, type: deployment } |
|||
- { name: kube-dns, file: kubedns-svc.yml, type: svc } |
|||
- { name: kubedns-autoscaler, file: kubedns-autoscaler-sa.yml, type: sa } |
|||
- { name: kubedns-autoscaler, file: kubedns-autoscaler-clusterrole.yml, type: clusterrole } |
|||
- { name: kubedns-autoscaler, file: kubedns-autoscaler-clusterrolebinding.yml, type: clusterrolebinding } |
|||
- { name: kubedns-autoscaler, file: kubedns-autoscaler.yml, type: deployment } |
|||
register: kubedns_manifests |
|||
when: |
|||
- dns_mode in ['kubedns','dnsmasq_kubedns'] |
|||
- inventory_hostname == groups['kube-master'][0] |
|||
- rbac_enabled or item.type not in rbac_resources |
|||
tags: |
|||
- dnsmasq |
|||
|
|||
# see https://github.com/kubernetes/kubernetes/issues/45084, only needed for "old" kube-dns |
|||
- name: Kubernetes Apps | Patch system:kube-dns ClusterRole |
|||
command: > |
|||
{{ bin_dir }}/kubectl patch clusterrole system:kube-dns |
|||
--patch='{ |
|||
"rules": [ |
|||
{ |
|||
"apiGroups" : [""], |
|||
"resources" : ["endpoints", "services"], |
|||
"verbs": ["list", "watch", "get"] |
|||
} |
|||
] |
|||
}' |
|||
when: |
|||
- dns_mode in ['kubedns', 'dnsmasq_kubedns'] |
|||
- inventory_hostname == groups['kube-master'][0] |
|||
- rbac_enabled and kubedns_version|version_compare("1.11.0", "<", strict=True) |
|||
tags: |
|||
- dnsmasq |
@ -0,0 +1,19 @@ |
|||
--- |
|||
apiVersion: rbac.authorization.k8s.io/v1beta1 |
|||
kind: ClusterRole |
|||
metadata: |
|||
labels: |
|||
kubernetes.io/bootstrapping: rbac-defaults |
|||
addonmanager.kubernetes.io/mode: Reconcile |
|||
name: system:coredns |
|||
rules: |
|||
- apiGroups: |
|||
- "" |
|||
resources: |
|||
- endpoints |
|||
- services |
|||
- pods |
|||
- namespaces |
|||
verbs: |
|||
- list |
|||
- watch |
@ -0,0 +1,18 @@ |
|||
--- |
|||
apiVersion: rbac.authorization.k8s.io/v1beta1 |
|||
kind: ClusterRoleBinding |
|||
metadata: |
|||
annotations: |
|||
rbac.authorization.kubernetes.io/autoupdate: "true" |
|||
labels: |
|||
kubernetes.io/bootstrapping: rbac-defaults |
|||
addonmanager.kubernetes.io/mode: EnsureExists |
|||
name: system:coredns |
|||
roleRef: |
|||
apiGroup: rbac.authorization.k8s.io |
|||
kind: ClusterRole |
|||
name: system:coredns |
|||
subjects: |
|||
- kind: ServiceAccount |
|||
name: coredns |
|||
namespace: {{ system_namespace }} |
@ -0,0 +1,22 @@ |
|||
--- |
|||
apiVersion: v1 |
|||
kind: ConfigMap |
|||
metadata: |
|||
name: coredns |
|||
namespace: {{ system_namespace }} |
|||
labels: |
|||
addonmanager.kubernetes.io/mode: EnsureExists |
|||
data: |
|||
Corefile: | |
|||
.:53 { |
|||
errors |
|||
health |
|||
kubernetes {{ cluster_name }} in-addr.arpa ip6.arpa { |
|||
pods insecure |
|||
upstream /etc/resolv.conf |
|||
fallthrough in-addr.arpa ip6.arpa |
|||
} |
|||
prometheus :9153 |
|||
proxy . /etc/resolv.conf |
|||
cache 30 |
|||
} |
@ -0,0 +1,81 @@ |
|||
--- |
|||
apiVersion: extensions/v1beta1 |
|||
kind: Deployment |
|||
metadata: |
|||
name: coredns{{ coredns_ordinal_suffix | default('') }} |
|||
namespace: {{ system_namespace }} |
|||
labels: |
|||
k8s-app: coredns{{ coredns_ordinal_suffix | default('') }} |
|||
kubernetes.io/cluster-service: "true" |
|||
addonmanager.kubernetes.io/mode: Reconcile |
|||
kubernetes.io/name: "CoreDNS" |
|||
spec: |
|||
replicas: {{ coredns_replicas }} |
|||
strategy: |
|||
type: RollingUpdate |
|||
rollingUpdate: |
|||
maxUnavailable: 0 |
|||
maxSurge: 10% |
|||
selector: |
|||
matchLabels: |
|||
k8s-app: coredns{{ coredns_ordinal_suffix | default('') }} |
|||
template: |
|||
metadata: |
|||
labels: |
|||
k8s-app: coredns{{ coredns_ordinal_suffix | default('') }} |
|||
annotations: |
|||
scheduler.alpha.kubernetes.io/critical-pod: '' |
|||
spec: |
|||
{% if rbac_enabled %} |
|||
serviceAccountName: coredns |
|||
{% endif %} |
|||
tolerations: |
|||
- key: node-role.kubernetes.io/master |
|||
effect: NoSchedule |
|||
- key: "CriticalAddonsOnly" |
|||
operator: "Exists" |
|||
containers: |
|||
- name: coredns |
|||
image: "{{ coredns_image_repo }}:{{ coredns_image_tag }}" |
|||
imagePullPolicy: {{ k8s_image_pull_policy }} |
|||
resources: |
|||
# TODO: Set memory limits when we've profiled the container for large |
|||
# clusters, then set request = limit to keep this container in |
|||
# guaranteed class. Currently, this container falls into the |
|||
# "burstable" category so the kubelet doesn't backoff from restarting it. |
|||
limits: |
|||
memory: {{ dns_memory_limit }} |
|||
requests: |
|||
cpu: {{ dns_cpu_requests }} |
|||
memory: {{ dns_memory_requests }} |
|||
args: [ "-conf", "/etc/coredns/Corefile" ] |
|||
volumeMounts: |
|||
- name: config-volume |
|||
mountPath: /etc/coredns |
|||
ports: |
|||
- containerPort: 53 |
|||
name: dns |
|||
protocol: UDP |
|||
- containerPort: 53 |
|||
name: dns-tcp |
|||
protocol: TCP |
|||
- containerPort: 9153 |
|||
name: metrics |
|||
protocol: TCP |
|||
livenessProbe: |
|||
httpGet: |
|||
path: /health |
|||
port: 8080 |
|||
scheme: HTTP |
|||
initialDelaySeconds: 60 |
|||
timeoutSeconds: 5 |
|||
successThreshold: 1 |
|||
failureThreshold: 5 |
|||
dnsPolicy: Default |
|||
volumes: |
|||
- name: config-volume |
|||
configMap: |
|||
name: coredns |
|||
items: |
|||
- key: Corefile |
|||
path: Corefile |
@ -0,0 +1,9 @@ |
|||
--- |
|||
apiVersion: v1 |
|||
kind: ServiceAccount |
|||
metadata: |
|||
name: coredns |
|||
namespace: {{ system_namespace }} |
|||
labels: |
|||
kubernetes.io/cluster-service: "true" |
|||
addonmanager.kubernetes.io/mode: Reconcile |
@ -0,0 +1,22 @@ |
|||
--- |
|||
apiVersion: v1 |
|||
kind: Service |
|||
metadata: |
|||
name: coredns{{ coredns_ordinal_suffix | default('') }} |
|||
namespace: {{ system_namespace }} |
|||
labels: |
|||
k8s-app: coredns{{ coredns_ordinal_suffix | default('') }} |
|||
kubernetes.io/cluster-service: "true" |
|||
addonmanager.kubernetes.io/mode: Reconcile |
|||
kubernetes.io/name: "CoreDNS" |
|||
spec: |
|||
selector: |
|||
k8s-app: coredns{{ coredns_ordinal_suffix | default('') }} |
|||
clusterIP: {{ clusterIP }} |
|||
ports: |
|||
- name: dns |
|||
port: 53 |
|||
protocol: UDP |
|||
- name: dns-tcp |
|||
port: 53 |
|||
protocol: TCP |
Write
Preview
Loading…
Cancel
Save