Bird
Raised Fist0
Kubernetesdevops~10 mins

Exec probe configuration in Kubernetes - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Exec probe configuration
Pod starts
↓
Kubelet runs exec probe
↓
Exec command runs inside container
↓
Command exits with code
↓
Exit code 0?
Yes→Probe success
↓
Exit code != 0?
Yes→Probe failure
↓
Kubelet acts on probe result
The kubelet runs a command inside the container. If the command exits with 0, the probe is successful; otherwise, it fails.
Execution Sample
Kubernetes
livenessProbe:
  exec:
    command:
    - cat
    - /tmp/healthy
  initialDelaySeconds: 5
  periodSeconds: 5
This probe runs 'cat /tmp/healthy' inside the container every 5 seconds after an initial delay of 5 seconds to check if the container is healthy.
Process Table
StepActionCommand RunExit CodeProbe ResultKubelet Response
1Pod startsPod running, probe scheduled
2Wait initialDelaySecondsWaiting 5 seconds before first probe
3Run exec probecat /tmp/healthy0SuccessNo action needed
4Wait periodSecondsWait 5 seconds before next probe
5Run exec probecat /tmp/healthy1FailureRestart container
6Container restartsPod restarting container
7Run exec probecat /tmp/healthy0SuccessNo action needed
💡 Probe runs repeatedly every periodSeconds; failure triggers container restart.
Status Tracker
VariableStartAfter Step 3After Step 5After Step 7
Exit CodeN/A010
Probe ResultN/ASuccessFailureSuccess
Container StateStartingRunningRestartingRunning
Key Moments - 3 Insights
Why does the probe fail when the command exits with code 1?
Because in the execution_table at Step 5, the exit code is 1, which means the command did not succeed, so the probe result is Failure, triggering a container restart.
What happens during initialDelaySeconds before the first probe?
As shown in Step 2, the kubelet waits the initialDelaySeconds (5 seconds) before running the first exec probe to give the container time to start.
Does the exec probe run only once?
No, as seen in Steps 3, 5, and 7, the exec probe runs repeatedly every periodSeconds (5 seconds) to continuously check container health.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at Step 3. What is the exit code of the exec command?
A0
B1
CSuccess
DFailure
💡 Hint
Check the 'Exit Code' column at Step 3 in the execution_table.
At which step does the kubelet decide to restart the container?
AStep 3
BStep 5
CStep 7
DStep 2
💡 Hint
Look at the 'Kubelet Response' column to find when the container restarts.
If the exec command always exits with 0, how would the container state change over time?
AContainer keeps restarting
BContainer stays running without restarts
CContainer stops after first probe
DContainer never starts
💡 Hint
Refer to the 'Container State' in variable_tracker when Exit Code is 0.
Concept Snapshot
Exec probe runs a command inside the container.
If command exits 0, probe succeeds; else fails.
Configured under livenessProbe or readinessProbe.
initialDelaySeconds waits before first run.
periodSeconds sets how often to run.
Failure can restart container.
Full Transcript
Exec probe configuration in Kubernetes means the kubelet runs a command inside the container to check health. The command's exit code determines success (0) or failure (non-zero). The probe runs after an initial delay and repeats periodically. If the probe fails, kubelet can restart the container. This visual trace shows the pod starting, waiting initialDelaySeconds, running the exec command, and reacting based on the exit code. Variables like exit code, probe result, and container state change step by step. Key moments clarify why exit code matters, the role of initial delay, and repeated probe runs. Quiz questions test understanding of exit codes, restart timing, and container state behavior.

Practice

(1/5)
1. What is the main purpose of an exec probe in Kubernetes?
easy
A. To schedule pods on specific nodes
B. To expose container ports to the outside world
C. To create persistent storage volumes
D. To run a command inside a container to check if it is healthy

Solution

  1. Step 1: Understand exec probe functionality

    An exec probe runs a command inside the container to check its health status.
  2. Step 2: Compare with other options

    Options A, B, and D relate to scheduling, networking, and storage, not health checks.
  3. Final Answer:

    To run a command inside a container to check if it is healthy -> Option D
  4. Quick Check:

    Exec probe = runs command inside container [OK]
Hint: Exec probe runs commands inside container to check health [OK]
Common Mistakes:
  • Confusing exec probe with port exposure
  • Thinking exec probe schedules pods
  • Mixing exec probe with storage management
2. Which of the following is the correct syntax snippet to define an exec liveness probe in a pod spec?
easy
A. livenessProbe:\n exec:\n command: ['cat', '/tmp/healthy']\n initialDelaySeconds: 5\n periodSeconds: 10
B. livenessProbe:\n httpGet:\n path: /healthz\n port: 8080\n initialDelaySeconds: 5
C. livenessProbe:\n exec:\n command: 'cat /tmp/healthy'\n initialDelaySeconds: 5
D. livenessProbe:\n exec:\n command: cat /tmp/healthy\n initialDelaySeconds: 5

Solution

  1. Step 1: Check exec command format

    The command must be an array of strings, e.g., ['cat', '/tmp/healthy'].
  2. Step 2: Validate YAML structure

    livenessProbe:\n exec:\n command: ['cat', '/tmp/healthy']\n initialDelaySeconds: 5\n periodSeconds: 10 correctly uses the array syntax and includes initialDelaySeconds and periodSeconds.
  3. Final Answer:

    Correct exec probe with command array and delays -> Option A
  4. Quick Check:

    Exec command = array of strings [OK]
Hint: Exec command must be a list of strings in YAML [OK]
Common Mistakes:
  • Using a single string instead of array for command
  • Confusing exec probe with httpGet probe
  • Omitting required indentation or keys
3. Given this exec probe configuration in a pod spec:
livenessProbe:
  exec:
    command: ['test', '-f', '/tmp/healthy']
  initialDelaySeconds: 3
  periodSeconds: 5
What happens if the file /tmp/healthy does not exist inside the container?
medium
A. The probe ignores the missing file and logs a warning
B. The probe passes and container continues running
C. The probe fails and Kubernetes restarts the container after retries
D. The container is immediately deleted without restart

Solution

  1. Step 1: Understand exec probe command

    The command 'test -f /tmp/healthy' returns success if the file exists, failure if not.
  2. Step 2: Effect of probe failure

    If the probe fails repeatedly, Kubernetes restarts the container to recover.
  3. Final Answer:

    The probe fails and Kubernetes restarts the container after retries -> Option C
  4. Quick Check:

    Missing file = probe fails = restart [OK]
Hint: Missing file causes exec probe failure and container restart [OK]
Common Mistakes:
  • Assuming probe passes if file missing
  • Thinking container deletes without restart
  • Believing probe ignores errors silently
4. You configured an exec readiness probe but your pod never becomes ready. Which of these is the most likely cause?
medium
A. The exec command is missing the command array syntax and uses a single string
B. The initialDelaySeconds is set too high
C. The container image is missing
D. The pod has no resource limits defined

Solution

  1. Step 1: Check exec command syntax

    Exec probe commands must be an array of strings; a single string causes probe failure.
  2. Step 2: Understand probe failure effect

    If the probe fails, the pod is not marked ready, so it never becomes ready.
  3. Final Answer:

    Exec command missing array syntax causes probe failure -> Option A
  4. Quick Check:

    Exec command array syntax missing = probe fails [OK]
Hint: Exec command must be array; single string causes failure [OK]
Common Mistakes:
  • Ignoring command array syntax errors
  • Blaming initialDelaySeconds without checking command
  • Confusing readiness with resource limits
5. You want to configure an exec liveness probe that waits 10 seconds before starting, runs the command ['/bin/check.sh'], retries every 5 seconds, and fails after 3 unsuccessful attempts. Which is the correct YAML snippet?
hard
A. livenessProbe:\n exec:\n command: '/bin/check.sh'\n initialDelaySeconds: 10\n periodSeconds: 5\n failureThreshold: 3
B. livenessProbe:\n exec:\n command: ['/bin/check.sh']\n initialDelaySeconds: 10\n periodSeconds: 5\n failureThreshold: 3
C. livenessProbe:\n exec:\n command: ['/bin/check.sh']\n initialDelaySeconds: 5\n periodSeconds: 10\n failureThreshold: 3
D. livenessProbe:\n exec:\n command: ['/bin/check.sh']\n initialDelaySeconds: 10\n periodSeconds: 5\n failureThreshold: 1

Solution

  1. Step 1: Verify command syntax and initial delay

    Command must be an array; initialDelaySeconds must be 10 as required.
  2. Step 2: Check periodSeconds and failureThreshold

    PeriodSeconds should be 5 for retry every 5 seconds; failureThreshold 3 means fail after 3 tries.
  3. Final Answer:

    Correct YAML with command array, initialDelaySeconds 10, periodSeconds 5, failureThreshold 3 -> Option B
  4. Quick Check:

    Command array + delays + failureThreshold correct = livenessProbe:\n exec:\n command: ['/bin/check.sh']\n initialDelaySeconds: 10\n periodSeconds: 5\n failureThreshold: 3 [OK]
Hint: Use array for command and set delays and failureThreshold as numbers [OK]
Common Mistakes:
  • Using string instead of array for command
  • Swapping periodSeconds and initialDelaySeconds values
  • Setting failureThreshold too low or missing
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