CKAD Practice Exam - Part 1

1.5 hours
  • 2 Learning Objectives

About this Hands-on Lab

This lab is designed to help prepare for the kinds of tasks and scenarios encountered during the Certified Kubernetes Application Developer (CKAD) exam.

In this lab, you will have the opportunity to practice your skills related to creating and configuring pods, deployments, and services. You will create a deployment which manages a set of specially-configured replica pods, and then expose those pods using a service.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Build the deployment and create it in the cluster

Build a deployment descriptor called pizza-deployment.yml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pizza-deployment
  namespace: pizza
spec:
  replicas: 3
  selector:
    matchLabels:
      app: pizza
  template:
    metadata:
      labels:
        app: pizza
    spec:
      containers:
      - name: pizza
        image: linuxacademycontent/pizza-service:1.14.6
        command: ["nginx"]
        args: ["-g", "daemon off;"]
        ports:
        - containerPort: 80
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8081
        readinessProbe:
          httpGet:
            path: /
            port: 80

Create the deployment in the cluster:

kubectl apply -f pizza-deployment.yml
Build the service and create it in the cluster

Build a service descriptor called pizza-service.yml:

apiVersion: v1
kind: Service
metadata:
  name: pizza-service
  namespace: pizza
spec:
  type: NodePort
  selector:
    app: pizza
  ports:
  - protocol: TCP
    port: 80
    nodePort: 30080

Create the service in the cluster:

kubectl apply -f pizza-service.yml

You can verify the service is working by testing the nodePort with curl:

curl localhost:30080

Additional Resources

Our pizza restaurant is working on a new web application designed to run in a Kubernetes cluster. The development team has designed a web service which serves a list of pizza toppings. The team has provided a set of specifications which the pizza topping web service needs in order to run.

We have been asked to create a deployment that meets the app's specifications. Then, we need to expose the application using a NodePort service. This setup should meet the following criteria:

  • All objects should be in the pizza namespace. This namespace already exists in the cluster.
  • The deployment should be named pizza-deployment.
  • The deployment should have 3 replicas.
  • The deployment's pods should have one container using the linuxacademycontent/pizza-service image with the tag 1.14.6.
  • Run the container with the command nginx.
  • Run the container with the arguments "-g", "daemon off;".
  • The pods should expose port 80 to the cluster.
  • The pods should be configured to periodically check the /healthz endpoint on port 8081, and restart automatically if the request fails.
  • The pods should not receive traffic from the service until the / endpoint on port 80 responds successfully.
  • The service should be named pizza-service.
  • The service should forward traffic to port 80 on the pods.
  • The service should be exposed externally by listening on port 30080 on each node.

What are Hands-on Labs

Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.

Sign In
Welcome Back!

Psst…this one if you’ve been moved to ACG!

Get Started
Who’s going to be learning?