Just some of my notes while learning about Kubernetes. I use Google Compute Engine to install mine.

Installation

To install Kubernetes, it’s as easy as copy and paste the below command

curl -sS https://get.k8s.io | bash

If you want to customize some default options, you can edit environment variables

curl -sS https://get.k8s.io | MULTIZONE=true KUBERNETES_PROVIDER=gce KUBE_GCE_ZONE=asia-east1-b NUM_NODES=4 bash

There’re more environment variables that you can take a look in kubernetes/cluster/gce/config-default.sh

It’s recommended to export it to environment instead of passing it to the command as above as taking the cluster down will be easier.

export KUBERNETES_PROVIDER=gce
export KUBE_GCE_ZONE=asia-east1-b
export NODE_SIZE=n1-highcpu-2
export MULTIZONE=true
export NUM_NODES=2
export KUBE_AUTOSCALER_MIN_NODES=2
export KUBE_AUTOSCALER_MAX_NODES=10
export KUBE_ENABLE_CLUSTER_AUTOSCALER=true
export PREEMPTIBLE_NODE=true

Add more nodes to cluster

KUBE_USE_EXISTING_MASTER=true KUBERNETES_PROVIDER=gce KUBE_GCE_ZONE=asia-east1-b NUM_NODES=2 ./kube-up.sh

Bring down cluster

KUBERNETES_PROVIDER=gce KUBE_GCE_ZONE=asia-east1-b ./kube-down.sh

Deploying applications on Kubernetes

We use Docker at work and deploying Docker containers in Kubernetes is a breeze.

docker build -t gcr.io/$PROJECT_ID/app-name:v1 .
gcloud docker push gcr.io/$PROJECT_ID/app-name:v1

# update
kubectl rolling-update <replication-controller> --image=gcr.io/$PROJECT_ID/app-name:v2

Expose the service to external

kubectl expose deployment <deployment-name> --type="LoadBalancer"

Enable autoscale

kubectl autoscale rc <replication-controller> --min 3 --max=10 --cpu-percent=60