2 min read | by Jordi Prats
Starting from Kubernetes v1.20 we can configure a startup Probe: It will check for containers to be come into service, disabling liveness and readiness checks until it succeeds.
These startup probes are useful for Pods that have containers that take a long time to be ready. Most people was setting really long liveness intervals to allow the container to start. Using a startup Probe we can set the liveness interval to something that doesn't need to take into account the service startup time.
We can configure the startupProbe for each container on a Pod like so:
startupProbe:
httpGet:
path: /health
port: liveness-port
failureThreshold: 30
periodSeconds: 10
Once the startupProbe succeeds, it it right after disabled and the liveness and readiness probes starts doing it's job
Here you can find a full example of a Pod with a startupProbe:
apiVersion: v1
kind: Pod
metadata:
name: demo-startup-probe
spec:
containers:
- image: startupdemo:3.0
name: startupdemo
startupProbe:
failureThreshold: 30
httpGet:
path: /api/system/status
port: http
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
It's important to correctly sed the failureThreshold so that it waits enough time for the container to startup, otherwise we might end up with never-ending restart loop.
Posted on 05/08/2021