If you're deploying a cluster with kube-aws:
- EC2 instances whose types are larger than or equal to
t2.medium
should be chosen for the cluster to work reliably - At least 3 etcd, 2 controller, 2 worker nodes are required to achieve high availability
kube-aws
tries its best to not modify your existing AWS resources therefore it's users' responsibility to ensure existing AWS resources provided to kube-aws
are properly configured.
Please note that you don't need to care if you've instructed kube-aws
to create all the AWS resources for you i.e. you've omitted vpcId
and routeTableId
from cluster.yaml
.
What kube-aws
does modify are:
- Adding a record set for Kubernetes API Endpoint to an existing hosted zone you've provided via the
hostedZoneId
configuration key incluster.yaml
- Adding one or more subnet(s) to an existing VPC specified by the
vpcId
- Associating one or more subnet(s) to an existing route table specified by the
routeTableId
See cluster.yaml
for more details.
All the other configurations for existing AWS resources must be done property by users before kube-aws
is run.
For example, if you're deploying a cluster to an existing VPC:
- An internet gateway or a NAT gateway needs to be added to VPC before cluster can be created
- Existing route tables must have an route to Internet in some form. For example, a default route to an internet gateway or to a NAT gateway via
0.0.0.0/0
would be needed or your cluster won't come up. See a relevant issue about it. - Existing route tables to be reused by kube-aws must be tagged with the key
KubernetesCluster
and your cluster's name for the value. - "DNS Hostnames" must be turned on before cluster can be created
- Or etcd nodes are unable to communicate each other thus the cluster doesn't work at all
Once you understand pre-requisites, you are ready to launch your first Kubernetes cluster.