diff --git a/cluster/addons/dns/skydns-rc.yaml.in b/cluster/addons/dns/skydns-rc.yaml.in index f65c489a05..002d8f0919 100644 --- a/cluster/addons/dns/skydns-rc.yaml.in +++ b/cluster/addons/dns/skydns-rc.yaml.in @@ -21,7 +21,7 @@ spec: spec: containers: - name: etcd - image: gcr.io/google_containers/etcd:2.0.9 + image: gcr.io/google_containers/etcd-amd64:2.2.1 resources: # keep request = limit to keep this container in guaranteed class limits: diff --git a/cluster/images/hyperkube/master-multi.json b/cluster/images/hyperkube/master-multi.json index 1e866bd52d..7fd4718c42 100644 --- a/cluster/images/hyperkube/master-multi.json +++ b/cluster/images/hyperkube/master-multi.json @@ -65,7 +65,7 @@ "image": "gcr.io/google_containers/hyperkube-ARCH:VERSION", "command": [ "/setup-files.sh", - "IP:10.0.0.1" + "IP:10.0.0.1,DNS:kubernetes,DNS:kubernetes.default,DNS:kubernetes.default.svc,DNS:kubernetes.default.svc.cluster.local" ], "volumeMounts": [ { diff --git a/cluster/images/hyperkube/master.json b/cluster/images/hyperkube/master.json index 13dddf3984..6dc5826dc5 100644 --- a/cluster/images/hyperkube/master.json +++ b/cluster/images/hyperkube/master.json @@ -65,7 +65,7 @@ "image": "gcr.io/google_containers/hyperkube-ARCH:VERSION", "command": [ "/setup-files.sh", - "IP:10.0.0.1" + "IP:10.0.0.1,DNS:kubernetes,DNS:kubernetes.default,DNS:kubernetes.default.svc,DNS:kubernetes.default.svc.cluster.local" ], "volumeMounts": [ { diff --git a/cluster/images/hyperkube/setup-files.sh b/cluster/images/hyperkube/setup-files.sh index 67dde33b55..3444f1a972 100644 --- a/cluster/images/hyperkube/setup-files.sh +++ b/cluster/images/hyperkube/setup-files.sh @@ -37,7 +37,9 @@ echo "admin,admin,admin" > /data/basic_auth.csv # Create HTTPS certificates groupadd -f -r kube-cert-test -CERT_DIR=/data CERT_GROUP=kube-cert-test /make-ca-cert.sh $(hostname -i) ${EXTRA_SANS} + +# hostname -I gets the ip of the node +CERT_DIR=/data CERT_GROUP=kube-cert-test /make-ca-cert.sh $(hostname -I | awk '{print $1}') ${EXTRA_SANS} # Create known tokens for service accounts echo "$(create_token),admin,admin" >> /data/known_tokens.csv diff --git a/docs/getting-started-guides/docker-multinode/deployDNS.md b/docs/getting-started-guides/docker-multinode/deployDNS.md index 21997dc498..83c47cdc8e 100644 --- a/docs/getting-started-guides/docker-multinode/deployDNS.md +++ b/docs/getting-started-guides/docker-multinode/deployDNS.md @@ -32,55 +32,42 @@ Documentation for other releases can be found at -## Deploy DNS +## Deploy DNS on `docker` and `docker-multinode` ### Get the template file -First of all, download the template dns rc and svc file from +First of all, download the dns template -[skydns-rc template](skydns-rc.yaml.in) +[skydns template](skydns.yaml.in) -[skydns-svc template](skydns-svc.yaml.in) +### Set environment variables -### Set env +Then you need to set `DNS_REPLICAS`, `DNS_DOMAIN` and `DNS_SERVER_IP` envs -Then you need to set `DNS_REPLICAS` , `DNS_DOMAIN` , `DNS_SERVER_IP` , `KUBE_SERVER` ENV. - -``` +```console $ export DNS_REPLICAS=1 $ export DNS_DOMAIN=cluster.local # specify in startup parameter `--cluster-domain` for containerized kubelet $ export DNS_SERVER_IP=10.0.0.10 # specify in startup parameter `--cluster-dns` for containerized kubelet - -$ export KUBE_SERVER=10.10.103.250 # your master server ip, you may change it ``` -### Replace the corresponding value in the template. +### Replace the corresponding value in the template and create the pod -``` -$ sed -e "s/{{ pillar\['dns_replicas'\] }}/${DNS_REPLICAS}/g;s/{{ pillar\['dns_domain'\] }}/${DNS_DOMAIN}/g;s/{kube_server_url}/${KUBE_SERVER}/g;" skydns-rc.yaml.in > ./skydns-rc.yaml +```console +$ sed -e "s/{{ pillar\['dns_replicas'\] }}/${DNS_REPLICAS}/g;s/{{ pillar\['dns_domain'\] }}/${DNS_DOMAIN}/g;s/{{ pillar\['dns_server'\] }}/${DNS_SERVER_IP}/g" skydns.yaml.in > ./skydns.yaml -$ sed -e "s/{{ pillar\['dns_server'\] }}/${DNS_SERVER_IP}/g" skydns-svc.yaml.in > ./skydns-svc.yaml -``` +# If the kube-system namespace isn't already created, create it +$ kubectl get ns +$ kubectl create -f ./kube-system.yaml -### Use `kubectl` to create skydns rc and service - - -``` -$ kubectl -s "$KUBE_SERVER:8080" --namespace=kube-system create -f ./skydns-rc.yaml - -$ kubectl -s "$KUBE_SERVER:8080" --namespace=kube-system create -f ./skydns-svc.yaml +$ kubectl create -f ./skydns.yaml ``` ### Test if DNS works Follow [this link](../../../cluster/addons/dns/#how-do-i-test-if-it-is-working) to check it out. - - - - [![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/docs/getting-started-guides/docker-multinode/deployDNS.md?pixel)]() diff --git a/docs/getting-started-guides/docker-multinode/kube-system.yaml b/docs/getting-started-guides/docker-multinode/kube-system.yaml new file mode 100644 index 0000000000..986f4b4822 --- /dev/null +++ b/docs/getting-started-guides/docker-multinode/kube-system.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: kube-system diff --git a/docs/getting-started-guides/docker-multinode/skydns-svc.yaml.in b/docs/getting-started-guides/docker-multinode/skydns-svc.yaml.in deleted file mode 100644 index 242c8871ee..0000000000 --- a/docs/getting-started-guides/docker-multinode/skydns-svc.yaml.in +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: kube-dns - namespace: kube-system - labels: - k8s-app: kube-dns - kubernetes.io/cluster-service: "true" - kubernetes.io/name: "KubeDNS" -spec: - selector: - k8s-app: kube-dns - clusterIP: {{ pillar['dns_server'] }} - ports: - - name: dns - port: 53 - protocol: UDP - - name: dns-tcp - port: 53 - protocol: TCP diff --git a/docs/getting-started-guides/docker-multinode/skydns-rc.yaml.in b/docs/getting-started-guides/docker-multinode/skydns.yaml.in similarity index 57% rename from docs/getting-started-guides/docker-multinode/skydns-rc.yaml.in rename to docs/getting-started-guides/docker-multinode/skydns.yaml.in index 845af9bf94..098b85ddf3 100644 --- a/docs/getting-started-guides/docker-multinode/skydns-rc.yaml.in +++ b/docs/getting-started-guides/docker-multinode/skydns.yaml.in @@ -1,31 +1,35 @@ apiVersion: v1 kind: ReplicationController metadata: - name: kube-dns-v8 + name: kube-dns-v10 namespace: kube-system labels: k8s-app: kube-dns - version: v8 + version: v10 kubernetes.io/cluster-service: "true" spec: replicas: {{ pillar['dns_replicas'] }} selector: k8s-app: kube-dns - version: v8 + version: v10 template: metadata: labels: k8s-app: kube-dns - version: v8 + version: v10 kubernetes.io/cluster-service: "true" spec: containers: - name: etcd - image: gcr.io/google_containers/etcd:2.0.9 + image: gcr.io/google_containers/etcd-amd64:2.2.1 resources: + # keep request = limit to keep this container in guaranteed class limits: cpu: 100m memory: 50Mi + requests: + cpu: 100m + memory: 50Mi command: - /usr/local/bin/etcd - -data-dir @@ -40,25 +44,33 @@ spec: - name: etcd-storage mountPath: /var/etcd/data - name: kube2sky - image: gcr.io/google_containers/kube2sky:1.11 + image: gcr.io/google_containers/kube2sky:1.12 resources: + # keep request = limit to keep this container in guaranteed class limits: cpu: 100m memory: 50Mi + requests: + cpu: 100m + memory: 50Mi args: # command = "/kube2sky" - - -domain={{ pillar['dns_domain'] }} - - -kube_master_url=http://{kube_server_url}:8080 + - --domain={{ pillar['dns_domain'] }} - name: skydns - image: gcr.io/google_containers/skydns:2015-03-11-001 + image: gcr.io/google_containers/skydns:2015-10-13-8c72f8c resources: + # keep request = limit to keep this container in guaranteed class limits: cpu: 100m memory: 50Mi + requests: + cpu: 100m + memory: 50Mi args: # command = "/skydns" - - -machines=http://localhost:4001 + - -machines=http://127.0.0.1:4001 - -addr=0.0.0.0:53 + - -ns-rotate=false - -domain={{ pillar['dns_domain'] }}. ports: - containerPort: 53 @@ -74,14 +86,25 @@ spec: scheme: HTTP initialDelaySeconds: 30 timeoutSeconds: 5 + readinessProbe: + httpGet: + path: /healthz + port: 8080 + scheme: HTTP + initialDelaySeconds: 1 + timeoutSeconds: 5 - name: healthz image: gcr.io/google_containers/exechealthz:1.0 resources: + # keep request = limit to keep this container in guaranteed class limits: cpu: 10m memory: 20Mi + requests: + cpu: 10m + memory: 20Mi args: - - -cmd=nslookup kubernetes.default.svc.{{ pillar['dns_domain'] }} localhost >/dev/null + - -cmd=nslookup kubernetes.default.svc.{{ pillar['dns_domain'] }} 127.0.0.1 >/dev/null - -port=8080 ports: - containerPort: 8080 @@ -90,3 +113,24 @@ spec: - name: etcd-storage emptyDir: {} dnsPolicy: Default # Don't use cluster DNS. +--- +apiVersion: v1 +kind: Service +metadata: + name: kube-dns + namespace: kube-system + labels: + k8s-app: kube-dns + kubernetes.io/cluster-service: "true" + kubernetes.io/name: "KubeDNS" +spec: + selector: + k8s-app: kube-dns + clusterIP: {{ pillar['dns_server'] }} + ports: + - name: dns + port: 53 + protocol: UDP + - name: dns-tcp + port: 53 + protocol: TCP