Configuring Probes for a Kubernetes Pod

15 minutes
  • 2 Learning Objectives

About this Hands-on Lab

Kubernetes is a powerful tool when it comes to keeping your containers running. It can automatically manage the process of restarting containers when they fail, and it can also manage network traffic to ensure only healthy and running containers are used to serve incoming requests. One way to gain even more control over these kinds of automation is through the use of liveness and readiness probes. In this lab, you will have the opportunity to work with liveness and readiness probes by configuring them for a pod.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Create a Probe to Detect and Restart Unhealthy Containers

Edit the pod descriptor to add a liveness probe:

vi candy-service-pod.yml
apiVersion: v1
kind: Pod
metadata:
  name: candy-service
spec:
  containers:
  - name: candy-service
    image: linuxacademycontent/candy-service:2
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8081
Create a Probe to Detect When the Container is Ready to Service Requests

Create a readiness probe for the pod.

apiVersion: v1
kind: Pod
metadata:
  name: candy-service
spec:
  containers:
  - name: candy-service
    image: linuxacademycontent/candy-service:2
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8081
    readinessProbe:
      httpGet:
        path: /
        port: 80

Create the pod in the cluster:

kubectl apply -f candy-service-pod.yml

Additional Resources

Your company just finished releasing a candy-themed mobile game. So far, things are going well, and the backend services running in your Kubernetes cluster are servicing thousands of requests. However, there have been a few issues with the backend service.

Container Health Issues

The first issue is caused by application instances entering an unhealthy state and responding to user requests with error messages. Unfortunately, this state does not cause the container to stop, so the Kubernetes cluster is not able to detect this state and restart the container. Luckily, the application has an internal endpoint that can be used to detect whether or not it is healthy. This endpoint is /healthz on port 8081. Your first task will be to create a probe to check this endpoint periodically. If the endpoint returns an error or fails to respond, the probe will detect this and the cluster will restart the container.

Container Startup Issues

Another issue is caused by new pods when they are starting up. The application takes a few seconds after startup before it is ready to service requests. As a result, some users are getting error message during this brief time. To fix this, you will need to create another probe. To detect whether the application is ready, the probe should simply make a request to the root endpoint, /, on port 80. If this request succeeds, then the application is ready.

There is already a pod descriptor in the home directory: ~/candy-service-pod.yml. Edit this file to add the probes, then create the pod in the cluster to test it.

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?