Lightweight Kubernetes
 
 
 
 
Go to file
Brendan Burns 5cb4444176 Task -> Pod #4, the final chapter 2014-06-08 23:00:12 -07:00
api Task -> Pod #4, the final chapter 2014-06-08 23:00:12 -07:00
cluster Task -> Pod #4, the final chapter 2014-06-08 23:00:12 -07:00
cmd Task -> Pod #4, the final chapter 2014-06-08 23:00:12 -07:00
examples/guestbook Task -> Pod part #3 2014-06-08 22:38:45 -07:00
hack Add a sleep to the e2e tests to ensure that the docker pull finishes. 2014-06-07 22:04:34 -07:00
hooks First commit 2014-06-06 16:40:48 -07:00
pkg Task -> Pod #4, the final chapter 2014-06-08 23:00:12 -07:00
release Move everything out of src and reorganize scripts. 2014-06-06 21:41:19 -07:00
third_party First commit 2014-06-06 16:40:48 -07:00
.gitignore Move everything out of src and reorganize scripts. 2014-06-06 21:41:19 -07:00
CONTRIB.md add CONTRIB.md 2014-06-08 08:46:09 -07:00
LICENSE First commit 2014-06-06 16:40:48 -07:00
README.md Update README.md 2014-06-08 20:05:26 -07:00

README.md

Kubernetes

Kubernetes is an open source reference implementation of container cluster management.

Getting started on Google Compute Engine

Prerequisites

  1. You need a Google Cloud Platform account with billing enabled. Visit http://cloud.google.com/console for more details

  2. You must have Go installed: www.golang.org.

  3. Ensure that your gcloud components are up-to-date by running gcloud components update.

  4. Get the Kubernetes source:

     git clone https://github.com/GoogleCloudPlatform/kubernetes.git
    

Setup

The setup script builds Kubernetes, then creates Google Compute Engine instances, firewall rules, and routes:

cd kubernetes
hack/dev-build-and-up.sh

Running a container (simple version)

Once you have your instances up and running, the build-go.sh script sets up your Go workspace and builds the Go components.

The cloudcfg.sh script spins up two containers, running Nginx and with port 80 mapped to 8080:

cd kubernetes
hack/build-go.sh
cluster/cloudcfg.sh -p 8080:80 run dockerfile/nginx 2 myNginx

To stop the containers:

cluster/cloudcfg.sh stop myNginx

To delete the containers:

cluster/cloudcfg.sh rm myNginx

Running a container (more complete version)

Assuming you've run hack/dev-build-and-up.sh and hack/build-go.sh:

cd kubernetes
cluster/cloudcfg.sh -c api/examples/task.json create /tasks

Where task.json contains something like:

{
  "ID": "nginx",
  "desiredState": {
    "image": "dockerfile/nginx",
    "networkPorts": [{
      "containerPort": 80,
      "hostPort": 8080
    }]
  },
  "labels": {
    "name": "foo"
  }
}

Look in api/examples/ for more examples

Tearing down the cluster

cd kubernetes
cluster/kube-down.sh

Development

Hooks

# Before committing any changes, please link/copy these hooks into your .git
# directory. This will keep you from accidentally committing non-gofmt'd
# go code.
cd kubernetes
ln -s "../../hooks/prepare-commit-msg" .git/hooks/prepare-commit-msg
ln -s "../../hooks/commit-msg" .git/hooks/commit-msg

Unit tests

cd kubernetes
hack/test-go.sh

Coverage

cd kubernetes
go tool cover -html=target/c.out

Integration tests

# You need an etcd somewhere in your path.
# To get from head:
go get github.com/coreos/etcd
go install github.com/coreos/etcd
sudo ln -s "$GOPATH/bin/etcd" /usr/bin/etcd
# Or just use the packaged one:
sudo ln -s "$REPO_ROOT/target/bin/etcd" /usr/bin/etcd
cd kubernetes
hack/integration-test.sh

Keeping your development fork in sync

One time after cloning your forked repo:

git remote add upstream https://github.com/GoogleCloudPlatform/kubernetes.git

Then each time you want to sync to upstream:

git fetch upstream
git rebase upstream/master

Regenerating the documentation

Install nodejs, npm, and raml2html, then run:

cd kubernetes/api
raml2html kubernetes.raml > kubernetes.html