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