boot2docker: add cluster bootstrap and doc

pull/6/head
Johan Euphrosine 2014-10-09 21:42:48 -07:00
parent 77d2815b86
commit 966c3dae70
7 changed files with 129 additions and 37 deletions

View File

@ -88,6 +88,7 @@ readonly KUBE_RUN_IMAGES=(
proxy
scheduler
kubelet
bootstrap
)

View File

@ -24,6 +24,7 @@ set -o nounset
set -o pipefail
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
KUBE_BUILD_RUN_IMAGES=y
source "$KUBE_ROOT/build/common.sh"
kube::build::verify_prereqs

View File

@ -0,0 +1,22 @@
# Copyright 2014 Google Inc. All rights reserved.
#
# 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.
# This file creates a minimal container for running Kubernetes binaries
FROM kubernetes
MAINTAINER Johan Euphrosine <proppy@google.com>
ADD . /kubernetes
CMD ["/kubernetes/run.sh"]

View File

@ -0,0 +1,56 @@
#! /bin/bash
# Copyright 2014 Google Inc. All rights reserved.
#
# 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.
# see https://github.com/docker/docker/issues/8395
HOST_IP=$(ip route show 0.0.0.0/0 | grep -Eo 'via \S+' | awk '{ print $2 }')
KUBELET_IP=$(hostname -i)
cat <<EOF > pod.yaml
version: v1beta1
id: cluster-pod
containers:
- name: etcd
image: coreos/etcd
command: ["-vv"]
ports:
- name: etcd-port
hostPort: 4001
containerPort: 4001
protocol: TCP
- name: apiserver
image: kubernetes
imagePullPolicy: never
ports:
- name: apiserver-port
hostPort: 8080
containerPort: 8080
protocol: TCP
command: ["/kubernetes/apiserver", "-v=5", "-address=0.0.0.0", "-etcd_servers=http://127.0.0.1:4001", "-machines=${KUBELET_IP}"]
- name: controller-manager
image: kubernetes
imagePullPolicy: never
command: ["/kubernetes/controller-manager", "-v=5", "-master=127.0.0.1:8080"]
- name: proxy
image: kubernetes
imagePullPolicy: never
command: ["/kubernetes/proxy", "-v=5", "-etcd_servers=http://127.0.0.1:4001"]
- name: scheduler
image: kubernetes
imagePullPolicy: never
command: ["/kubernetes/scheduler", "-v=5", "-master=127.0.0.1:8080"]
EOF
./kubelet -v=5 -address=0.0.0.0 -hostname_override=${KUBELET_IP} -etcd_servers=http://${HOST_IP}:4001 -config pod.yaml

View File

@ -17,7 +17,6 @@
FROM kubernetes
MAINTAINER Joe Beda <jbeda@google.com>
ENV ETCD_SERVERS http://127.0.0.1:4001
ENV API_SERVER 127.0.0.1:8080
ADD . /kubernetes

View File

@ -0,0 +1,49 @@
## Getting started locally with docker
This method runs a local kubernetes cluster self hosted in Docker
itself. The Kubelet is started in a container with access to the
Docker API. It then launches a pod of containers that comprise the
rest of a local-only kubernetes cluster.
### Pre-requisites
#### With boot2docker
- Install [boot2docker](http://boot2docker.io/)
```
boot2docker up
$(boot2docker shellinit)
export DOCKER_HOST_IP=$(boot2docker ip 2>/dev/null)
export KUBERNETES_MASTER=$DOCKER_HOST_IP:8080
```
#### With local docker daemon
```
export DOCKER_HOST_IP=127.0.0.1
export KUBERNETES_MASTER=$DOCKER_HOST_IP:8080
```
### Build the kubernetes docker images
```
./build/make-run-images.sh
```
### Bootstrap the cluster
```
docker run -v /var/run/docker.sock:/var/run/docker.sock kubernetes-bootstrap
```
### Build kubernetes clean
```
./build/make-client.sh
```
### Manage your pods
```
kubecfg list /pods
kubecfg -p 8181:80 run nginx 1 kube-nginx
kubecfg list /pods
curl $DOCKER_HOST_IP:8181
```

View File

@ -1,36 +0,0 @@
version: v1beta1
id: cluster-pod
containers:
- name: etcd
image: coreos/etcd
- name: kubelet
image: kubernetes-kubelet
imagePullPolicy: never
volumeMounts:
- name: docker-socket
mountPath: /var/run/docker.sock
- name: apiserver
image: kubernetes-apiserver
imagePullPolicy: never
ports:
- name: apiserver-port
hostPort: 8080
containerPort: 8080
protocol: TCP
env:
- name: KUBE_MINIONS
value: 127.0.0.1
- name: controller-manager
image: kubernetes-controller-manager
imagePullPolicy: never
- name: proxy
image: kubernetes-proxy
imagePullPolicy: never
- name: scheduler
image: kubernetes-scheduler
imagePullPolicy: never
volumes:
- name: docker-socket
source:
hostDir:
path: /var/run/docker.sock