Bird
Raised Fist0
Microservicessystem_design~5 mins

Liveness and readiness probes in Microservices - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is a liveness probe in microservices?
A liveness probe checks if a service is alive and running. If it fails, the system restarts the service to fix it.
Click to reveal answer
beginner
What does a readiness probe do?
A readiness probe checks if a service is ready to accept traffic. If it fails, the service is removed from load balancing until ready.
Click to reveal answer
intermediate
Why use both liveness and readiness probes together?
Using both helps keep services healthy and only sends traffic to services that are ready, improving reliability and user experience.
Click to reveal answer
beginner
Give a simple example of a liveness probe check.
A liveness probe might send an HTTP GET request to "/healthz" endpoint. If it returns 200 OK, the service is alive.
Click to reveal answer
intermediate
What happens if a readiness probe fails continuously?
The service stops receiving new requests but keeps running. This prevents sending traffic to a service that can't handle it yet.
Click to reveal answer
What is the main purpose of a liveness probe?
ATo balance load between services
BTo check if the service is alive and restart if needed
CTo monitor network latency
DTo check if the service is ready to accept traffic
If a readiness probe fails, what happens?
AThe service is removed from load balancer and stops receiving traffic
BThe service is restarted immediately
CThe service shuts down
DNothing happens
Which probe helps avoid sending traffic to a service that is not ready?
ALiveness probe
BLoad balancer
CStartup probe
DReadiness probe
What is a common method used by liveness probes to check service health?
AMeasuring disk space
BChecking CPU usage
CSending an HTTP GET request to a health endpoint
DVerifying user login
Why is it important to have both liveness and readiness probes?
ATo restart services and manage traffic properly
BTo increase CPU usage
CTo reduce network bandwidth
DTo log user activity
Explain the difference between liveness and readiness probes in microservices.
Think about when a service should be restarted versus when it should just stop receiving traffic.
You got /4 concepts.
    Describe a real-life scenario where readiness probes improve user experience.
    Imagine a restaurant kitchen not ready to serve but still open.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a liveness probe in microservices?
      easy
      A. To check if the service is ready to accept traffic
      B. To log user requests for debugging
      C. To monitor the network latency between services
      D. To check if the service is alive and restart it if it is not

      Solution

      1. Step 1: Understand the role of liveness probes

        Liveness probes detect if a service is stuck or dead and need restarting.
      2. Step 2: Differentiate from readiness probes

        Readiness probes check if the service can handle requests, not if it is alive.
      3. Final Answer:

        To check if the service is alive and restart it if it is not -> Option D
      4. Quick Check:

        Liveness probe = check alive and restart [OK]
      Hint: Liveness = alive and restart, Readiness = ready for traffic [OK]
      Common Mistakes:
      • Confusing liveness with readiness probes
      • Thinking liveness probes check traffic readiness
      • Assuming liveness probes monitor performance
      2. Which of the following is the correct syntax to define a readiness probe in a Kubernetes pod spec?
      easy
      A. livenessProbe: exec: command: ["cat", "/tmp/healthy"] timeoutSeconds: 1
      B. livenessProbe: tcpSocket: port: 8080 initialDelaySeconds: 5 periodSeconds: 10
      C. readinessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 5 periodSeconds: 10
      D. livenessProbe: httpGet: path: /ready port: 8080 failureThreshold: 3

      Solution

      1. Step 1: Identify readiness probe syntax

        Readiness probes often use httpGet with path and port, plus delay and period settings.
      2. Step 2: Confirm correct fields and indentation

        readinessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 5 periodSeconds: 10 correctly shows readinessProbe with httpGet, initialDelaySeconds, and periodSeconds.
      3. Final Answer:

        readinessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 5 periodSeconds: 10 -> Option C
      4. Quick Check:

        Readiness probe syntax = readinessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 5 periodSeconds: 10 [OK]
      Hint: Readiness uses httpGet with path and port in YAML [OK]
      Common Mistakes:
      • Mixing livenessProbe and readinessProbe fields
      • Incorrect indentation in YAML
      • Using wrong probe type for readiness
      3. Given this Kubernetes pod spec snippet, what will happen if the readiness probe fails continuously?
      readinessProbe:
        httpGet:
          path: /ready
          port: 8080
        initialDelaySeconds: 5
        periodSeconds: 10
        failureThreshold: 3
      medium
      A. The pod will be restarted immediately
      B. The pod will be marked as not ready and removed from service endpoints
      C. The pod will ignore the failure and continue serving traffic
      D. The pod will scale up automatically

      Solution

      1. Step 1: Understand readiness probe failure effect

        Readiness probe failure marks pod as not ready, so it stops receiving traffic.
      2. Step 2: Differentiate from liveness probe effect

        Liveness probe failure triggers pod restart, readiness does not.
      3. Final Answer:

        The pod will be marked as not ready and removed from service endpoints -> Option B
      4. Quick Check:

        Readiness failure = pod not ready, no restart [OK]
      Hint: Readiness failure removes pod from load balancer, no restart [OK]
      Common Mistakes:
      • Confusing readiness failure with pod restart
      • Assuming pod scales automatically on probe failure
      • Ignoring failureThreshold effect
      4. A microservice has a liveness probe configured as an HTTP GET on /health. The service sometimes returns HTTP 500 during startup but is healthy afterward. What is the best fix to avoid unnecessary restarts?
      medium
      A. Increase initialDelaySeconds to allow startup time before probing
      B. Change the probe to readiness probe instead of liveness probe
      C. Remove the probe completely to avoid restarts
      D. Set failureThreshold to 1 to detect failures faster

      Solution

      1. Step 1: Identify cause of restarts

        Liveness probe fails during startup because service returns HTTP 500 before ready.
      2. Step 2: Adjust probe timing to avoid false failures

        Increasing initialDelaySeconds delays probe start, allowing service to become healthy first.
      3. Final Answer:

        Increase initialDelaySeconds to allow startup time before probing -> Option A
      4. Quick Check:

        Delay liveness probe start to avoid false failures [OK]
      Hint: Delay liveness probe start to avoid false failure during startup [OK]
      Common Mistakes:
      • Removing probes which reduces reliability
      • Confusing readiness and liveness probe roles
      • Setting failureThreshold too low causing quick restarts
      5. You have a microservice that takes time to initialize resources before it can serve requests. You want to ensure it is not restarted unnecessarily but also not receive traffic before ready. How should you configure liveness and readiness probes?
      hard
      A. Set liveness probe with a longer initialDelaySeconds and readiness probe to check resource initialization
      B. Use only a liveness probe with a short periodSeconds to restart fast
      C. Use only a readiness probe and no liveness probe
      D. Set both probes to the same HTTP path and timing

      Solution

      1. Step 1: Prevent unnecessary restarts during initialization

        Set liveness probe initialDelaySeconds long enough to avoid restarting while initializing.
      2. Step 2: Use readiness probe to block traffic until ready

        Readiness probe should check if resources are initialized before accepting traffic.
      3. Final Answer:

        Set liveness probe with a longer initialDelaySeconds and readiness probe to check resource initialization -> Option A
      4. Quick Check:

        Liveness delay + readiness check = safe startup [OK]
      Hint: Delay liveness, readiness blocks traffic until ready [OK]
      Common Mistakes:
      • Using only one probe type causing traffic or restart issues
      • Setting same path and timing for both probes
      • Not delaying liveness probe causing premature restarts