Bird
Raised Fist0
AWScloud~30 mins

Deploying workloads on EKS in AWS - Mini Project: Build & Apply

Choose your learning style10 modes available
Deploying workloads on EKS
📖 Scenario: You are working as a cloud engineer for a company that wants to deploy a simple web application on Amazon Elastic Kubernetes Service (EKS). You will create the necessary Kubernetes deployment and service configuration files step-by-step to run the application on EKS.
🎯 Goal: Build a Kubernetes deployment and service manifest to deploy a web application on EKS. You will create the deployment YAML with the container image, add configuration for replicas, and expose the deployment with a service.
📋 What You'll Learn
Create a Kubernetes deployment manifest with a specific container image
Add a replica count configuration to the deployment
Define container port in the deployment
Create a Kubernetes service manifest to expose the deployment
💡 Why This Matters
🌍 Real World
Deploying containerized applications on EKS is a common task for cloud engineers to run scalable and managed workloads.
💼 Career
Understanding how to write Kubernetes manifests and deploy workloads on EKS is essential for cloud and DevOps roles.
Progress0 / 4 steps
1
Create the initial Kubernetes deployment manifest
Create a Kubernetes deployment manifest named deployment.yaml with the following exact content: apiVersion apps/v1, kind Deployment, metadata name webapp, and spec template with a container named webapp-container using the image nginx:1.21. Write the YAML content exactly as specified.
AWS
Hint

Start by writing the YAML keys exactly as shown. Indentation matters in YAML.

2
Add replica count to the deployment
Add a replicas field with the value 3 under the spec section of the deployment manifest in deployment.yaml. This will run three copies of the web application.
AWS
Hint

Place replicas: 3 directly under spec: at the same indentation level as selector: and template:.

3
Add container port to the deployment
Add a ports section under the container in the deployment manifest with a single port number 80. This tells Kubernetes which port the container listens on.
AWS
Hint

Indent ports: under the container, then list - containerPort: 80.

4
Create a service to expose the deployment
Create a Kubernetes service manifest named service.yaml that exposes the deployment webapp on port 80 using type LoadBalancer. The service should select pods with label app: webapp. Write the YAML manifest exactly.
AWS
Hint

Use selector to match pods with label app: webapp. Set service type to LoadBalancer.

Practice

(1/5)
1. What is the main purpose of Amazon EKS when deploying workloads?
easy
A. To run containerized applications using Kubernetes without managing servers
B. To store large amounts of data in the cloud
C. To create virtual machines for running applications
D. To manage user access and permissions

Solution

  1. Step 1: Understand EKS functionality

    Amazon EKS is a managed Kubernetes service that lets you run containers without managing the underlying servers.
  2. Step 2: Compare options

    Storing data relates to services like S3, creating VMs to EC2, and managing permissions to IAM--none of which is EKS's core purpose.
  3. Final Answer:

    To run containerized applications using Kubernetes without managing servers -> Option A
  4. Quick Check:

    EKS = Managed Kubernetes for containers [OK]
Hint: EKS = Kubernetes service for containers, not storage or VMs [OK]
Common Mistakes:
  • Confusing EKS with storage services like S3
  • Thinking EKS manages virtual machines directly
  • Mixing EKS with IAM user management
2. Which of the following is the correct command to deploy an application using a YAML file named app-deployment.yaml on EKS?
easy
A. kubectl run app-deployment.yaml
B. eksctl create app app-deployment.yaml
C. aws eks deploy app-deployment.yaml
D. kubectl apply -f app-deployment.yaml

Solution

  1. Step 1: Identify the kubectl command for applying YAML

    The correct command to deploy resources defined in a YAML file is kubectl apply -f filename.
  2. Step 2: Evaluate other options

    kubectl run app-deployment.yaml is for running individual pods, not applying YAML manifests. eksctl create app app-deployment.yaml misuses eksctl, which is primarily for EKS cluster creation. aws eks deploy app-deployment.yaml is not a valid AWS CLI command.
  3. Final Answer:

    kubectl apply -f app-deployment.yaml -> Option D
  4. Quick Check:

    Deploy YAML with kubectl apply -f [OK]
Hint: Use kubectl apply -f for YAML deployment files [OK]
Common Mistakes:
  • Using eksctl for direct YAML deployment
  • Confusing kubectl run with apply
  • Trying AWS CLI commands that don't exist
3. Given this YAML snippet for a Deployment on EKS:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp-container
        image: nginx:latest

What will be the number of running pods after applying this deployment?
medium
A. 1
B. 3
C. 0
D. Depends on the node capacity

Solution

  1. Step 1: Read the replicas field in the Deployment spec

    The YAML specifies replicas: 3, which means Kubernetes will create 3 pods for this deployment.
  2. Step 2: Understand pod creation behavior

    Unless there is a scheduling issue, Kubernetes will run 3 pods as requested.
  3. Final Answer:

    3 -> Option B
  4. Quick Check:

    replicas = number of pods running [OK]
Hint: replicas field sets pod count in Deployment spec [OK]
Common Mistakes:
  • Assuming only 1 pod runs by default
  • Thinking pods depend on node capacity without error
  • Confusing selector labels with pod count
4. You tried to deploy a workload on EKS using kubectl apply -f deployment.yaml, but got an error: error: unable to recognize "deployment.yaml": no matches for kind "Deploy". What is the likely cause?
medium
A. The cluster is not running
B. kubectl is not installed
C. The YAML file has a typo in the kind field; it should be 'Deployment' not 'Deploy'
D. The image name in the YAML is incorrect

Solution

  1. Step 1: Analyze the error message

    The error says no matches for kind "Deploy", which means Kubernetes does not recognize this resource kind.
  2. Step 2: Check the YAML kind field

    The correct kind for workload deployment is "Deployment", not "Deploy". This typo causes the error.
  3. Final Answer:

    The YAML file has a typo in the kind field; it should be 'Deployment' not 'Deploy' -> Option C
  4. Quick Check:

    Kind field must be exact Kubernetes resource name [OK]
Hint: Check resource kind spelling in YAML for errors [OK]
Common Mistakes:
  • Ignoring error details about resource kind
  • Assuming cluster or kubectl issues without checking YAML
  • Blaming image name for syntax errors
5. You want to deploy a stateless web app on EKS that automatically scales between 2 and 5 pods based on CPU usage. Which combination of Kubernetes resources should you define in your YAML files?
hard
A. A Deployment with replicas set to 2 and a Horizontal Pod Autoscaler targeting CPU usage with max replicas 5
B. A StatefulSet with replicas 5 and a LoadBalancer service
C. A DaemonSet to run pods on every node and a Cluster Autoscaler
D. A Deployment with replicas fixed at 5 and a NodePort service

Solution

  1. Step 1: Identify resource for managing pod replicas with scaling

    A Deployment manages stateless pods and can be combined with a Horizontal Pod Autoscaler (HPA) to scale pods based on CPU.
  2. Step 2: Understand autoscaling setup

    Set Deployment replicas to minimum 2, and HPA to scale up to max 5 pods based on CPU usage.
  3. Step 3: Evaluate other options

    StatefulSet is for stateful apps, DaemonSet runs pods on all nodes (not scaling pods), fixed replicas do not autoscale.
  4. Final Answer:

    A Deployment with replicas set to 2 and a Horizontal Pod Autoscaler targeting CPU usage with max replicas 5 -> Option A
  5. Quick Check:

    Deployment + HPA = autoscaling pods [OK]
Hint: Use Deployment + HPA for CPU-based pod autoscaling [OK]
Common Mistakes:
  • Using StatefulSet for stateless apps
  • Confusing DaemonSet with autoscaling pods
  • Setting fixed replicas without autoscaler
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard