Showing posts with label containers. Show all posts
Showing posts with label containers. Show all posts

Thursday, March 24, 2022

AWS Containers - EKS NodeGroup Operations



1. get node group details of the cluster
eksctl get nodegroup --cluster EKS-raman-cluster

2. scale-out node group to 5 nodes and then check no. of instances created in EC2
eksctl scale nodegroup --cluster EKS-raman-cluster --name ng-1 --nodes 5 --nodes-max 5

3. scale in node group to 3 nodes and then check no. of instances created in EC2
eksctl scale nodegroup --cluster EKS-raman-cluster --name ng-1 --nodes 3

To create a new node group with spot instance and demand instance

Step 1: create a yaml file as mentioned below (nodegroup.yml)

apiVersion: eksctl.io/v1alpha5 
kind: ClusterConfig

metadata: 
    name: EKS-raman-cluster 
    region: us-east-1 

nodeGroups: 
     - name: ng-1 
     instanceType: t2.small 
     desiredCapacity: 3 
     ssh: 
     publicKeyName: #use existing EC2 key 

     - name: ng-mixed 
     minSize: 3 
     maxSize: 5 
     instancesDistribution: 
         maxPrice: 0.2 
         instanceTypes: ["t2.small", "t3.small"] 
         onDemandBaseCapacity: 0 
         onDemandPercentageAboveBaseCapacity: 50 
     ssh: 
         publicKeyName: #use existing EC2 key 

Step 2: Run the below command to create ng-mixed node group and after that check in the ec2 instances.
eksctl create nodegroup --config-file=nodegroup.yml --include='ng-mixed'

Step 3: Run the below command to delete ng-mixed node group
eksctl delete nodegroup --config-file=nodegroup.yml --include=ng-mixed --approve

AWS Containers - EKS Lab Setup (using Region Virginia (us-east-1))




For Lab point of view we will setup the environment as per below diagram





Step 1:- Create an IAM user and EKS Role
  • Create the user with IAM with console and programmatic and download security credentials with security access id and Access key
  • Permission point of view provide EKSFullAccess(There are some set of policies you need to add) and other permission as per the requirement to deal EKS with other services
  • Create IAM Role for EKS
  • EKS (Allows EKS to manage clusters on your behalf.):- Role name :- AWSServiceRoleForAmazonEKS
  • EKS - Cluster AWSClusterRoleForAmazonEKS

Step 2:- Create the SSH key pair

  • Create SSH key value pair (I am creating a key pair as vdevops)

Step 3:- Setup Command line Tools
  • Install awscli on Ubuntu Ec2 Instance
apt install unzip -y
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
export PATH=/usr/local/bin:$PATH
aws --version
aws configure (To confiure aws credential with region=us-east-1)

  • Install and setup eksctl
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
eksctl version

  • Install and setup kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client

Step 4:- Create first EKS Cluster using eksctl

Create a yaml file to create EKS Cluster ( I have given file name as eks.yaml)
apiVersion: eksctl.io/v1
alpha5 
    kind: ClusterConfig

    metadata: 
        name: EKS-raman-cluster 
        region: us-east-1

    nodeGroups: 
        - name: ng-1 
        instanceType: t2.small 
        desiredCapacity: 3
        volumeSize: 10 
        ssh: 
            publicKeyName: #use existing EC2 key  

Step 5:- Run below commands w.r.t eksctl

# Find the available options for eksctl create cluster command 
eksctl create cluster --help 

# create cluster by using yaml config file (it will take 15-20 mins to create cluster ) 
eksctl create cluster -f eks.yaml 

# Post cluster check 
kubectl get nodes 

# check there must be a /root/.kube/config file which refers to EKS Cluster 

# get cluster 
eksctl get cluster 

# get node group details of the cluster 
eksctl get nodegroup --cluster EKS-raman-cluster



AWS Containers - EKS introduction




EKS
Amazon Elastic Kubernetes Service (EKS) is a managed Kubernetes service that makes it easy for you to run Kubernetes on AWS and on-premises.

Amazon EKS automatically manages the availability and scalability of the Kubernetes control plane.

EKS lets you run your Kubernetes applications on both Amazon EC2 and AWS Fargate.

Amazon EKS supports using Elastic Load Balancing including Application Load Balancer (ALB), Network Load Balancer (NLB), and Classic Load Balancer.

Amazon EKS is integrated with AWS CloudTrail to provide visibility and audit history of EKS management operations.

Deploy applications with EKS in the cloud.

Fluentd

Open-source log data collector > why logs? - for compliance (auditing, company, business) - for security (transparency, monitoring, admin...