3.3 KiB
Getting started on AWS
Prerequisites
- You need an AWS account. Visit http://aws.amazon.com to get started
- Install and configure AWS Command Line Interface
- You need an AWS instance profile and role with EC2 full access.
Cluster turnup
Using wget
export KUBERNETES_PROVIDER=aws; wget -q -O - https://get.k8s.io | bash
or if you prefer curl
export KUBERNETES_PROVIDER=aws; curl -sS https://get.k8s.io | bash
NOTE: The script will provision a new VPC and a 4 node k8s cluster in us-west-2 (Oregon). It'll also try to create or reuse a keypair called "kubernetes", and IAM profiles called "kubernetes-master" and "kubernetes-minion". If these already exist, make sure you want them to be used here.
Once the cluster is up, it will print the ip address of your cluster, this process takes about 5 to 10 minutes.
export KUBERNETES_MASTER=https://<ip-address>
Also setup your path to point to the released binaries:
export PATH=$PATH:$PWD:/kubernetes/cluster
If you run into trouble come ask questions on IRC at #google-containers on freenode.
Running a container (simple version)
Once you have your cluster created you can use ${SOME_DIR}/kubernetes/cluster/kubectl.sh
to access
the kubernetes api.
The kubectl.sh
line below spins up two containers running
Nginx running on port 80:
cluster/kubectl.sh run-container my-nginx --image=dockerfile/nginx --replicas=2 --port=80
To stop the containers:
cluster/kubectl.sh stop rc my-nginx
To delete the containers:
cluster/kubectl.sh delete rc my-nginx
Running a container (more complete version)
cd kubernetes
cluster/kubectl.sh create -f docs/getting-started-guides/pod.json
Where pod.json contains something like:
{
"id": "php",
"kind": "Pod",
"apiVersion": "v1beta1",
"desiredState": {
"manifest": {
"version": "v1beta1",
"id": "php",
"containers": [{
"name": "nginx",
"image": "dockerfile/nginx",
"ports": [{
"containerPort": 80,
"hostPort": 8081
}],
"livenessProbe": {
"enabled": true,
"type": "http",
"initialDelaySeconds": 30,
"httpGet": {
"path": "/index.html",
"port": 8081
}
}
}]
}
},
"labels": {
"name": "foo"
}
}
You can see your cluster's pods:
cluster/kubectl.sh get pods
and delete the pod you just created:
cluster/kubectl.sh delete pods php
Since this pod is scheduled on a minion running in AWS, you will have to enable incoming tcp traffic via the port specified in the pod manifest before you see the nginx welcome page. After doing so, it should be visible at http://:.
Look in examples/
for more examples
Tearing down the cluster
cd kubernetes
cluster/kube-down.sh
Running examples
Take a look at next steps
Cloud Formation [optional]
There is a contributed example from CoreOS using Cloud Formation.