github.com/kubernetes-incubator/kube-aws@v0.16.4/docs/getting-started/prerequisites.md (about) 1 # Pre-requisites 2 3 If you're deploying a cluster with kube-aws: 4 5 * [EC2 instances whose types are larger than or equal to `t2.medium` should be chosen for the cluster to work reliably](https://github.com/kubernetes-incubator/kube-aws/issues/138) 6 * [At least 3 etcd, 2 controller, 2 worker nodes are required to achieve high availability](https://github.com/kubernetes-incubator/kube-aws/issues/138#issuecomment-266432162) 7 8 ## Deploying to an existing VPC 9 10 `kube-aws` tries its best to not modify your existing AWS resources. It's our users' responsibility to ensure existing AWS resources provided to `kube-aws` are properly configured. 11 12 Please note that you don't need to care about modifications 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`. 13 14 What `kube-aws` does modify are: 15 16 * Adding a record set for Kubernetes API Endpoint to an existing hosted zone you've provided via the `hostedZoneId` configuration key in `cluster.yaml` 17 * Adding one or more subnet(s) to an existing VPC specified by the `vpcId` 18 * Associating one or more subnet(s) to an existing route table specified by the `routeTableId` 19 20 See [`cluster.yaml`](https://github.com/kubernetes-incubator/kube-aws/blob/master/builtin/files/cluster.yaml.tmpl) for more details. 21 22 All the other configurations for existing AWS resources must be done properly by users before `kube-aws` is run. 23 24 For example, if you're deploying a cluster to an existing VPC: 25 26 * An internet gateway or a NAT gateway needs to be added to VPC before cluster can be created 27 * Or [all the nodes will fail to launch because they can't pull docker images or ACIs required to run essential processes like fleet, hyperkube, etcd, awscli, cfn-signal, cfn-init.](https://github.com/kubernetes-incubator/kube-aws/issues/120) 28 * Existing route tables must have a 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](https://github.com/kubernetes-incubator/kube-aws/issues/121#issuecomment-266255407). 29 * Existing route tables and/or subnets to be reused by kube-aws must be tagged with the key `kubernetes.io/cluster/$CLUSTER_NAME` and "shared" as a value. 30 * Or [Kubernetes will fail to create ELBs correspond to Kubernetes services with `type=LoadBalancer`](https://github.com/kubernetes-incubator/kube-aws/issues/135) 31 * ["DNS Hostnames" must be turned on before cluster can be created](https://github.com/kubernetes-incubator/kube-aws/issues/119) 32 * Or etcd nodes are unable to communicate each other thus the cluster doesn't work at all 33 34 Once you understand pre-requisites, you are [ready to launch your first Kubernetes cluster][getting-started-step-1]. 35 36 [getting-started-step-1]: step-1-configure.md 37 [getting-started-step-2]: step-2-render.md 38 [getting-started-step-3]: step-3-launch.md 39 [getting-started-step-4]: step-4-update.md 40 [getting-started-step-5]: step-5-add-node-pool.md 41 [getting-started-step-6]: step-6-configure-add-ons.md 42 [getting-started-step-7]: step-7-destroy.md