From a765d57d532c84ff8d9bcdf6e6e723ac0961ae66 Mon Sep 17 00:00:00 2001 From: Matt Rickard Date: Fri, 7 Apr 2017 17:00:57 -0700 Subject: [PATCH] Upgrade kube-dns to 1.14.1 --- deploy/addons/kube-dns/kube-dns-cm.yaml | 21 ++++ ...e-dns-rc.yaml => kube-dns-controller.yaml} | 101 ++++++++++++------ deploy/addons/kube-dns/kube-dns-svc.yaml | 2 +- pkg/minikube/assets/addons.go | 9 +- 4 files changed, 95 insertions(+), 38 deletions(-) create mode 100644 deploy/addons/kube-dns/kube-dns-cm.yaml rename deploy/addons/kube-dns/{kube-dns-rc.yaml => kube-dns-controller.yaml} (58%) diff --git a/deploy/addons/kube-dns/kube-dns-cm.yaml b/deploy/addons/kube-dns/kube-dns-cm.yaml new file mode 100644 index 0000000000..057857527a --- /dev/null +++ b/deploy/addons/kube-dns/kube-dns-cm.yaml @@ -0,0 +1,21 @@ +# Copyright 2016 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: ConfigMap +metadata: + name: kube-dns + namespace: kube-system + labels: + addonmanager.kubernetes.io/mode: EnsureExists diff --git a/deploy/addons/kube-dns/kube-dns-rc.yaml b/deploy/addons/kube-dns/kube-dns-controller.yaml similarity index 58% rename from deploy/addons/kube-dns/kube-dns-rc.yaml rename to deploy/addons/kube-dns/kube-dns-controller.yaml index c99df2006e..e1475cdcd9 100644 --- a/deploy/addons/kube-dns/kube-dns-rc.yaml +++ b/deploy/addons/kube-dns/kube-dns-controller.yaml @@ -12,33 +12,39 @@ # See the License for the specific language governing permissions and # limitations under the License. -apiVersion: v1 -kind: ReplicationController + +apiVersion: extensions/v1beta1 +kind: Deployment metadata: - name: kube-dns-v20 + name: kube-dns namespace: kube-system labels: k8s-app: kube-dns - version: v20 kubernetes.io/cluster-service: "true" + addonmanager.kubernetes.io/mode: Reconcile spec: replicas: 1 selector: - k8s-app: kube-dns - version: v20 + matchLabels: + k8s-app: kube-dns template: metadata: labels: k8s-app: kube-dns - version: v20 annotations: scheduler.alpha.kubernetes.io/critical-pod: '' - scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]' spec: + tolerations: + - key: "CriticalAddonsOnly" + operator: "Exists" + volumes: + - name: kube-dns-config + configMap: + name: kube-dns + optional: true containers: - name: kubedns - image: gcr.io/google_containers/kubedns-amd64:1.9 - imagePullPolicy: IfNotPresent + image: gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1 resources: # TODO: Set memory limits when we've profiled the container for large # clusters, then set request = limit to keep this container in @@ -51,8 +57,8 @@ spec: memory: 70Mi livenessProbe: httpGet: - path: /healthz-kubedns - port: 8080 + path: /healthcheck/kubedns + port: 10054 scheme: HTTP initialDelaySeconds: 60 timeoutSeconds: 5 @@ -68,9 +74,13 @@ spec: initialDelaySeconds: 3 timeoutSeconds: 5 args: - # command = "/kube-dns" - --domain=cluster.local. - --dns-port=10053 + - --config-dir=/kube-dns-config + - --v=2 + env: + - name: PROMETHEUS_PORT + value: "10055" ports: - containerPort: 10053 name: dns-local @@ -78,22 +88,33 @@ spec: - containerPort: 10053 name: dns-tcp-local protocol: TCP + - containerPort: 10055 + name: metrics + protocol: TCP + volumeMounts: + - name: kube-dns-config + mountPath: /kube-dns-config - name: dnsmasq - image: gcr.io/google_containers/kube-dnsmasq-amd64:1.4 + image: gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.1 livenessProbe: httpGet: - path: /healthz-dnsmasq - port: 8080 + path: /healthcheck/dnsmasq + port: 10054 scheme: HTTP initialDelaySeconds: 60 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 5 args: + - -v=2 + - -logtostderr + - -configDir=/etc/k8s/dns/dnsmasq-nanny + - -restartDnsmasq=true + - -- + - -k - --cache-size=1000 - - --no-resolv - - --server=127.0.0.1#10053 - --log-facility=- + - --server=127.0.0.1#10053 ports: - containerPort: 53 name: dns @@ -101,26 +122,36 @@ spec: - containerPort: 53 name: dns-tcp protocol: TCP - - name: healthz - image: gcr.io/google_containers/exechealthz-amd64:1.2 + # see: https://github.com/kubernetes/kubernetes/issues/29055 for details resources: - limits: - memory: 50Mi requests: - cpu: 10m - # Note that this container shouldn't really need 50Mi of memory. The - # limits are set higher than expected pending investigation on #29688. - # The extra memory was stolen from the kubedns container to keep the - # net memory requested by the pod constant. - memory: 50Mi + cpu: 150m + memory: 20Mi + volumeMounts: + - name: kube-dns-config + mountPath: /etc/k8s/dns/dnsmasq-nanny + - name: sidecar + image: gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.1 + livenessProbe: + httpGet: + path: /metrics + port: 10054 + scheme: HTTP + initialDelaySeconds: 60 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 5 args: - - --cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1 >/dev/null - - --url=/healthz-dnsmasq - - --cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1:10053 >/dev/null - - --url=/healthz-kubedns - - --port=8080 - - --quiet + - --v=2 + - --logtostderr + - --probe=kubedns,127.0.0.1:10053,kubernetes.default.svc.cluster.local.,5,A + - --probe=dnsmasq,127.0.0.1:53,kubernetes.default.svc.cluster.local.,5,A ports: - - containerPort: 8080 + - containerPort: 10054 + name: metrics protocol: TCP + resources: + requests: + memory: 20Mi + cpu: 10m dnsPolicy: Default # Don't use cluster DNS. diff --git a/deploy/addons/kube-dns/kube-dns-svc.yaml b/deploy/addons/kube-dns/kube-dns-svc.yaml index 8abbc79176..64036867a6 100644 --- a/deploy/addons/kube-dns/kube-dns-svc.yaml +++ b/deploy/addons/kube-dns/kube-dns-svc.yaml @@ -31,4 +31,4 @@ spec: protocol: UDP - name: dns-tcp port: 53 - protocol: TCP \ No newline at end of file + protocol: TCP diff --git a/pkg/minikube/assets/addons.go b/pkg/minikube/assets/addons.go index eaaed9bcb4..23434a145c 100644 --- a/pkg/minikube/assets/addons.go +++ b/pkg/minikube/assets/addons.go @@ -83,9 +83,14 @@ var Addons = map[string]*Addon{ }, true, "default-storageclass"), "kube-dns": NewAddon([]*MemoryAsset{ NewMemoryAsset( - "deploy/addons/kube-dns/kube-dns-rc.yaml", + "deploy/addons/kube-dns/kube-dns-controller.yaml", constants.AddonsPath, - "kube-dns-rc.yaml", + "kube-dns-controller.yaml", + "0640"), + NewMemoryAsset( + "deploy/addons/kube-dns/kube-dns-cm.yaml", + constants.AddonsPath, + "kube-dns-cm.yaml", "0640"), NewMemoryAsset( "deploy/addons/kube-dns/kube-dns-svc.yaml",