k3s/docs/getting-started-guides/aws.md

3.3 KiB

Getting started on AWS

Prerequisites

  1. You need an AWS account. Visit http://aws.amazon.com to get started
  2. Install and configure AWS Command Line Interface
  3. 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.