Simple EKS Module
Selecting an Instance Type for EKS Clusters
Several factors need to be considered when choosing an instance type for an EKS cluster:
- Number of vCPUs
- Amount of memory
- Networking capacity
- Cost
Another important criteria is the maximum number of pods the cluster can concurrently run. In a cluster using native VPC networking the maximum number of pods is limited by the number of network interfaces in an instance. Here you can find a list of pod count limits per instance type.
Alernative pod networking solutions exist that lift the pod density limitation. This module supports using Calico CNI to allow for a much higher number of pods per node. This is especially useful when many pods are expected to be running on the cluster, but they will be mostly idle.
Development
Testing
We use Terratest to run integration tests.
Before running the tests the following environment variables must be set:
- AWS_PROFILE: the AWS profile to use for the test
- AWS_DEFAULT_REGION: region where the test cluster will be created
- SIMPLE_EKS_TEST_VPC_NAME: VPC to be used by the test cluster
Then, go into test
folder and run:
go test -v -timeout 30m
References
- Creating an Amazon EKS cluster
- Cluster VPC considerations
- IAM roles for service accounts technical overview
- Introducing fine-grained IAM roles for service accounts
- Cluster Autoscaler
- Metrics Server
Calico
- https://docs.projectcalico.org/getting-started/kubernetes/managed-public-cloud/eks
- https://docs.projectcalico.org/reference/public-cloud/aws#routing-traffic-within-a-single-vpc-subnet
- https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html#EIP_Disable_SrcDestCheck
- https://github.com/awsdocs/amazon-eks-user-guide/blob/master/doc_source/calico.md
- https://github.com/awsdocs/amazon-eks-user-guide/blob/master/doc_source/cni-custom-network.md
- https://github.com/awslabs/amazon-eks-ami/blob/master/files/eni-max-pods.txt
- https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI
Launch templates are needed for Calico: