CKAD Practice Exam – Part 1
DevOps Team Lead in Content
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.
CKAD Practice Exam - Part 1
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
pizzanamespace. This namespace already exists in the cluster.
- The deployment should be named
- The deployment should have
- The deployment's pods should have one container using the
linuxacademycontent/pizza-serviceimage with the tag
- Run the container with the command
- Run the container with the arguments
"-g", "daemon off;".
- The pods should expose port
80to the cluster.
- The pods should be configured to periodically check the
/healthzendpoint on port
8081, and restart automatically if the request fails.
- The pods should not receive traffic from the service until the
/endpoint on port
- The service should be named
- The service should forward traffic to port
80on the pods.
- The service should be exposed externally by listening on port
30080on each node.
Get logged in
Use the credentials and server IP in the hands-on lab overview page to log in with SSH.
Build the deployment and create it in the cluster
Build a deployment descriptor (with whatever text editor you like) called
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:
[user@host]$ kubectl apply -f pizza-deployment.yml
kubectl get deploy -n pizza should show us some ready pods.
Build the service and create it in the cluster
Build a service descriptor (again, with whatever text editor you like) called
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:
[user@host]$ kubectl apply -f pizza-service.yml
We can verify the service is working by testing the nodePort with a
If that command output was a list of pizza toppings, then we're good to go. We've built the service and it's running. Congratulations!