Bird
Raised Fist0
AWScloud~10 mins

Deploying workloads on EKS in AWS - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to specify the Kubernetes namespace in the deployment manifest.

AWS
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  namespace: [1]
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: my-app-image:latest
Drag options to blanks, or click blank then click option'
Adefault
Bproduction
Cstaging
Dkube-system
Attempts:
3 left
💡 Hint
Common Mistakes
Using a namespace that does not exist in the cluster.
Omitting the namespace field when a specific namespace is required.
2fill in blank
medium

Complete the command to create an EKS cluster using AWS CLI.

AWS
aws eks create-cluster --name my-cluster --role-arn arn:aws:iam::123456789012:role/EKSRole --resources-vpc-config subnetIds=[1]
Drag options to blanks, or click blank then click option'
Asubnet-11111,subnet-22222
Bsubnet-12345,subnet-67890
Csubnet-abcde,subnet-fghij
Dsubnet-xyz12,subnet-xyz34
Attempts:
3 left
💡 Hint
Common Mistakes
Using invalid or non-existent subnet IDs.
Separating subnet IDs with spaces instead of commas.
3fill in blank
hard

Fix the error in the kubectl command to apply the deployment manifest.

AWS
kubectl [1] -f deployment.yaml
Drag options to blanks, or click blank then click option'
Adelete
Bapply
Cremove
Dcreate
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'delete' or 'remove' which deletes resources instead of creating them.
Using 'create' which fails if the resource already exists.
4fill in blank
hard

Fill both blanks to define a container port and protocol in the deployment manifest.

AWS
containers:
- name: my-app-container
  image: my-app-image:latest
  ports:
  - containerPort: [1]
    protocol: [2]
Drag options to blanks, or click blank then click option'
A80
B443
CTCP
DUDP
Attempts:
3 left
💡 Hint
Common Mistakes
Using UDP protocol for HTTP containers.
Using incorrect port numbers for the service.
5fill in blank
hard

Fill all three blanks to create a service manifest exposing the deployment on port 80.

AWS
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: [1]
  ports:
  - protocol: [2]
    port: [3]
    targetPort: 80
Drag options to blanks, or click blank then click option'
Amy-app
BTCP
C80
Dmy-service
Attempts:
3 left
💡 Hint
Common Mistakes
Mismatching selector labels causing no pods to be selected.
Using wrong protocol or port numbers.

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