EKS - Part 1#

Amazon Elastic Kubernetes Service (Amazon EKS) is a managed service that makes it easy for you to run Kubernetes on AWS without needing to stand up or maintain your own Kubernetes control plane. Kubernetes is an open-source system for automating the deployment, scaling, and management of containerized applications.

  • EKS runs Kubernetes control plane instances across multiple Availability Zones to ensure high availability.
  • EKS automatically detects and replaces unhealthy control plane instances.
  • EKS provides automated version upgrades and patching for them.
  • EKS is also integrated with many AWS services to provide scalability and security.

eksctl#

  • Install the Latest AWS CLI

      pip install awscli --upgrade --user
    
  • Install eksctl (Mac)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

#Install the Weaveworks Homebrew tap.
brew tap weaveworks/tap

# Install or upgrade eksctl.
brew install weaveworks/tap/eksctl

brew upgrade eksctl && brew link --overwrite eksctl

eksctl version
  • Install eksctl (Linux)
# The latest version is 0.16
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp

## For EKS with workloads   0.17.0-rc.0 is required
# curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/0.17.0-rc.0/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp


#Install the Weaveworks Homebrew tap.
sudo mv /tmp/eksctl /usr/local/bin

eksctl version

EKS with Fargate#

Fargate#

AWS Fargate is a serverless compute engine for containers that works with both Amazon Elastic Container Service (ECS) and Amazon Elastic Kubernetes Service (EKS). Fargate makes it easy for you to focus on building your applications. Fargate removes the need to provision and manage servers, lets you specify and pay for resources per application, and improves security through application isolation by design.

  • Deploy and manage applications, not infrastructure
  • Right-sized resources with flexible pricing options
  • Secure isolation by design
  • Rich observability of applications
Pod Configuration#
vCPU valueMemory value
.25 vCPU0.5 GB, 1 GB, 2 GB
.5 vCPU1 GB, 2 GB, 3 GB, 4 GB
1 vCPU2 GB, 3 GB, 4 GB, 5 GB, 6 GB, 7 GB, 8 GB
2 vCPUBetween 4 GB and 16 GB in 1-GB increments
4 vCPUBetween 8 GB and 30 GB in 1-GB increments

Create Cluster#

CLUSTER_NAME="pg-prd"
REGION_CODE="ap-southeast-1"

eksctl create cluster \
--name ${CLUSTER_NAME} \
--region ${REGION_CODE} \
--fargate

EKS with EC2#

CLUSTER_NAME="pg-prd"
REGION_CODE="ap-southeast-2"
NODE_GRP_NAME="standard-workers"
KEY_NAME="nonprod-kp"
NODE_TYPE="t3.medium"

eksctl create cluster \
--name  ${CLUSTER_NAME}  \
--region ${REGION_CODE} \
--nodegroup-name ${NODE_GRP_NAME} \
--node-type ${NODE_TYPE} \
--nodes 1 \
--nodes-min 1 \
--nodes-max 3 \
--ssh-access \
--ssh-public-key "${KEY_NAME}" \
--managed

Delete Cluster#

  • Get all services

      kubectl get svc --all-namespaces
    
  • Delete all services with EXTERNAL-IP

      kubectl delete svc <service-name>
    
  • Delete cluster

      eksctl delete cluster --name <cluster-name>