mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 05:57:25 +00:00
Merge pull request #10829 from ZJU-SEL/adddns2docker
add kube-dns for docker k8s
This commit is contained in:
commit
f94f6c48fd
@ -48,6 +48,7 @@ Please install Docker 1.6.2 or Docker 1.7.1.
|
|||||||
- [Bootstrap Docker](#bootstrap-docker)
|
- [Bootstrap Docker](#bootstrap-docker)
|
||||||
- [Master Node](#master-node)
|
- [Master Node](#master-node)
|
||||||
- [Adding a worker node](#adding-a-worker-node)
|
- [Adding a worker node](#adding-a-worker-node)
|
||||||
|
- [Deploy a DNS](#deploy-a-dns)
|
||||||
- [Testing your cluster](#testing-your-cluster)
|
- [Testing your cluster](#testing-your-cluster)
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
@ -106,6 +107,10 @@ cd kubernetes/docs/getting-started-guides/docker-multinode/
|
|||||||
|
|
||||||
See [here](docker-multinode/worker.md) for detailed instructions explanation.
|
See [here](docker-multinode/worker.md) for detailed instructions explanation.
|
||||||
|
|
||||||
|
## Deploy a DNS
|
||||||
|
|
||||||
|
See [here](docker-multinode/deployDNS.md) for instructions.
|
||||||
|
|
||||||
## Testing your cluster
|
## Testing your cluster
|
||||||
|
|
||||||
Once your cluster has been created you can [test it out](docker-multinode/testing.md)
|
Once your cluster has been created you can [test it out](docker-multinode/testing.md)
|
||||||
|
85
docs/getting-started-guides/docker-multinode/deployDNS.md
Normal file
85
docs/getting-started-guides/docker-multinode/deployDNS.md
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
<!-- BEGIN MUNGE: UNVERSIONED_WARNING -->
|
||||||
|
|
||||||
|
<!-- BEGIN STRIP_FOR_RELEASE -->
|
||||||
|
|
||||||
|
<img src="http://kubernetes.io/img/warning.png" alt="WARNING"
|
||||||
|
width="25" height="25">
|
||||||
|
<img src="http://kubernetes.io/img/warning.png" alt="WARNING"
|
||||||
|
width="25" height="25">
|
||||||
|
<img src="http://kubernetes.io/img/warning.png" alt="WARNING"
|
||||||
|
width="25" height="25">
|
||||||
|
<img src="http://kubernetes.io/img/warning.png" alt="WARNING"
|
||||||
|
width="25" height="25">
|
||||||
|
<img src="http://kubernetes.io/img/warning.png" alt="WARNING"
|
||||||
|
width="25" height="25">
|
||||||
|
|
||||||
|
<h2>PLEASE NOTE: This document applies to the HEAD of the source tree</h2>
|
||||||
|
|
||||||
|
If you are using a released version of Kubernetes, you should
|
||||||
|
refer to the docs that go with that version.
|
||||||
|
|
||||||
|
<strong>
|
||||||
|
The latest 1.0.x release of this document can be found
|
||||||
|
[here](http://releases.k8s.io/release-1.0/docs/getting-started-guides/docker-multinode/deployDNS.md).
|
||||||
|
|
||||||
|
Documentation for other releases can be found at
|
||||||
|
[releases.k8s.io](http://releases.k8s.io).
|
||||||
|
</strong>
|
||||||
|
--
|
||||||
|
|
||||||
|
<!-- END STRIP_FOR_RELEASE -->
|
||||||
|
|
||||||
|
<!-- END MUNGE: UNVERSIONED_WARNING -->
|
||||||
|
|
||||||
|
## Deploy DNS
|
||||||
|
|
||||||
|
### Get the template file
|
||||||
|
|
||||||
|
First of all, download the template dns rc and svc file from
|
||||||
|
|
||||||
|
[skydns-rc template](skydns-rc.yaml.in)
|
||||||
|
|
||||||
|
[skydns-svc template](skydns-svc.yaml.in)
|
||||||
|
|
||||||
|
### Set env
|
||||||
|
|
||||||
|
Then you need to set `DNS_REPLICAS` , `DNS_DOMAIN` , `DNS_SERVER_IP` , `KUBE_SERVER` ENV.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ 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 correponding value in the template.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ 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
|
||||||
|
|
||||||
|
$ sed -e "s/{{ pillar\['dns_server'\] }}/${DNS_SERVER_IP}/g" skydns-svc.yaml.in > ./skydns-svc.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
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test if DNS works
|
||||||
|
|
||||||
|
Follow [this link](../../../cluster/addons/dns/#how-do-i-test-if-it-is-working) to check it out.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
|
||||||
|
[]()
|
||||||
|
<!-- END MUNGE: GENERATED_ANALYTICS -->
|
@ -160,9 +160,11 @@ systemctl start docker
|
|||||||
Ok, now that your networking is set up, you can startup Kubernetes, this is the same as the single-node case, we will use the "main" instance of the Docker daemon for the Kubernetes components.
|
Ok, now that your networking is set up, you can startup Kubernetes, this is the same as the single-node case, we will use the "main" instance of the Docker daemon for the Kubernetes components.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo docker run --net=host -d -v /var/run/docker.sock:/var/run/docker.sock gcr.io/google_containers/hyperkube:v0.21.2 /hyperkube kubelet --api-servers=http://localhost:8080 --v=2 --address=0.0.0.0 --enable-server --hostname-override=127.0.0.1 --config=/etc/kubernetes/manifests-multi
|
sudo docker run --net=host -d -v /var/run/docker.sock:/var/run/docker.sock gcr.io/google_containers/hyperkube:v1.0.1 /hyperkube kubelet --api-servers=http://localhost:8080 --v=2 --address=0.0.0.0 --enable-server --hostname-override=127.0.0.1 --config=/etc/kubernetes/manifests-multi --cluster-dns=10.0.0.10 --cluster-domain=cluster.local
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> Note that `--cluster-dns` and `--cluster-domain` is used to deploy dns, feel free to discard them if dns is not needed.
|
||||||
|
|
||||||
### Also run the service proxy
|
### Also run the service proxy
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -196,7 +198,7 @@ If all else fails, ask questions on IRC at [#google-containers](http://webchat.f
|
|||||||
|
|
||||||
### Next steps
|
### Next steps
|
||||||
|
|
||||||
Move on to [adding one or more workers](worker.md)
|
Move on to [adding one or more workers](worker.md) or [deploy a dns](deployDNS.md)
|
||||||
|
|
||||||
|
|
||||||
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
|
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
|
||||||
|
@ -135,7 +135,7 @@ start_k8s(){
|
|||||||
sleep 5
|
sleep 5
|
||||||
|
|
||||||
# Start kubelet & proxy, then start master components as pods
|
# Start kubelet & proxy, then start master components as pods
|
||||||
docker run --net=host --privileged --restart=always -d -v /sys:/sys:ro -v /var/run/docker.sock:/var/run/docker.sock gcr.io/google_containers/hyperkube:v${K8S_VERSION} /hyperkube kubelet --api-servers=http://localhost:8080 --v=2 --address=0.0.0.0 --enable-server --hostname-override=127.0.0.1 --config=/etc/kubernetes/manifests-multi
|
docker run --net=host --privileged --restart=always -d -v /sys:/sys:ro -v /var/run/docker.sock:/var/run/docker.sock gcr.io/google_containers/hyperkube:v${K8S_VERSION} /hyperkube kubelet --api-servers=http://localhost:8080 --v=2 --address=0.0.0.0 --enable-server --hostname-override=127.0.0.1 --config=/etc/kubernetes/manifests-multi --cluster-dns=10.0.0.10 --cluster-domain=cluster.local
|
||||||
docker run -d --net=host --privileged gcr.io/google_containers/hyperkube:v${K8S_VERSION} /hyperkube proxy --master=http://127.0.0.1:8080 --v=2
|
docker run -d --net=host --privileged gcr.io/google_containers/hyperkube:v${K8S_VERSION} /hyperkube proxy --master=http://127.0.0.1:8080 --v=2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,92 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ReplicationController
|
||||||
|
metadata:
|
||||||
|
name: kube-dns-v8
|
||||||
|
namespace: kube-system
|
||||||
|
labels:
|
||||||
|
k8s-app: kube-dns
|
||||||
|
version: v8
|
||||||
|
kubernetes.io/cluster-service: "true"
|
||||||
|
spec:
|
||||||
|
replicas: {{ pillar['dns_replicas'] }}
|
||||||
|
selector:
|
||||||
|
k8s-app: kube-dns
|
||||||
|
version: v8
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
k8s-app: kube-dns
|
||||||
|
version: v8
|
||||||
|
kubernetes.io/cluster-service: "true"
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: etcd
|
||||||
|
image: gcr.io/google_containers/etcd:2.0.9
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 50Mi
|
||||||
|
command:
|
||||||
|
- /usr/local/bin/etcd
|
||||||
|
- -data-dir
|
||||||
|
- /var/etcd/data
|
||||||
|
- -listen-client-urls
|
||||||
|
- http://127.0.0.1:2379,http://127.0.0.1:4001
|
||||||
|
- -advertise-client-urls
|
||||||
|
- http://127.0.0.1:2379,http://127.0.0.1:4001
|
||||||
|
- -initial-cluster-token
|
||||||
|
- skydns-etcd
|
||||||
|
volumeMounts:
|
||||||
|
- name: etcd-storage
|
||||||
|
mountPath: /var/etcd/data
|
||||||
|
- name: kube2sky
|
||||||
|
image: gcr.io/google_containers/kube2sky:1.11
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 50Mi
|
||||||
|
args:
|
||||||
|
# command = "/kube2sky"
|
||||||
|
- -domain={{ pillar['dns_domain'] }}
|
||||||
|
- -kube_master_url=http://{kube_server_url}:8080
|
||||||
|
- name: skydns
|
||||||
|
image: gcr.io/google_containers/skydns:2015-03-11-001
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 50Mi
|
||||||
|
args:
|
||||||
|
# command = "/skydns"
|
||||||
|
- -machines=http://localhost:4001
|
||||||
|
- -addr=0.0.0.0:53
|
||||||
|
- -domain={{ pillar['dns_domain'] }}.
|
||||||
|
ports:
|
||||||
|
- containerPort: 53
|
||||||
|
name: dns
|
||||||
|
protocol: UDP
|
||||||
|
- containerPort: 53
|
||||||
|
name: dns-tcp
|
||||||
|
protocol: TCP
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /healthz
|
||||||
|
port: 8080
|
||||||
|
scheme: HTTP
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
timeoutSeconds: 5
|
||||||
|
- name: healthz
|
||||||
|
image: gcr.io/google_containers/exechealthz:1.0
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 10m
|
||||||
|
memory: 20Mi
|
||||||
|
args:
|
||||||
|
- -cmd=nslookup kubernetes.default.svc.{{ pillar['dns_domain'] }} localhost >/dev/null
|
||||||
|
- -port=8080
|
||||||
|
ports:
|
||||||
|
- containerPort: 8080
|
||||||
|
protocol: TCP
|
||||||
|
volumes:
|
||||||
|
- name: etcd-storage
|
||||||
|
emptyDir: {}
|
||||||
|
dnsPolicy: Default # Don't use cluster DNS.
|
@ -0,0 +1,20 @@
|
|||||||
|
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
|
@ -146,7 +146,7 @@ systemctl start docker
|
|||||||
Again this is similar to the above, but the `--api-servers` now points to the master we set up in the beginning.
|
Again this is similar to the above, but the `--api-servers` now points to the master we set up in the beginning.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo docker run --net=host -d -v /var/run/docker.sock:/var/run/docker.sock gcr.io/google_containers/hyperkube:v0.21.2 /hyperkube kubelet --api-servers=http://${MASTER_IP}:8080 --v=2 --address=0.0.0.0 --enable-server --hostname-override=$(hostname -i)
|
sudo docker run --net=host -d -v /var/run/docker.sock:/var/run/docker.sock gcr.io/google_containers/hyperkube:v1.0.1 /hyperkube kubelet --api-servers=http://${MASTER_IP}:8080 --v=2 --address=0.0.0.0 --enable-server --hostname-override=$(hostname -i) --cluster-dns=10.0.0.10 --cluster-domain=cluster.local
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Run the service proxy
|
#### Run the service proxy
|
||||||
|
@ -133,9 +133,8 @@ start_k8s() {
|
|||||||
sleep 5
|
sleep 5
|
||||||
|
|
||||||
# Start kubelet & proxy in container
|
# Start kubelet & proxy in container
|
||||||
sudo docker run --net=host --privileged --restart=always -d -v /sys:/sys:ro -v /var/run/docker.sock:/var/run/docker.sock gcr.io/google_containers/hyperkube:v${K8S_VERSION} /hyperkube kubelet --api-servers=http://${MASTER_IP}:8080 --v=2 --address=0.0.0.0 --enable-server --hostname-override=$(hostname -i)
|
sudo docker run --net=host --privileged --restart=always -d -v /sys:/sys:ro -v /var/run/docker.sock:/var/run/docker.sock gcr.io/google_containers/hyperkube:v${K8S_VERSION} /hyperkube kubelet --api-servers=http://${MASTER_IP}:8080 --v=2 --address=0.0.0.0 --enable-server --hostname-override=$(hostname -i) --cluster-dns=10.0.0.10 --cluster-domain=cluster.local
|
||||||
sudo docker run -d --net=host --privileged --restart=always gcr.io/google_containers/hyperkube:v${K8S_VERSION} /hyperkube proxy --master=http://${MASTER_IP}:8080 --v=2
|
sudo docker run -d --net=host --privileged --restart=always gcr.io/google_containers/hyperkube:v${K8S_VERSION} /hyperkube proxy --master=http://${MASTER_IP}:8080 --v=2
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "Detecting your OS distro ..."
|
echo "Detecting your OS distro ..."
|
||||||
|
Loading…
Reference in New Issue
Block a user