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