feat(probes): add startup probe for handling slow initial startup

Add startupProbe to give Jellyfin sufficient time to start, especially
with large media libraries or slow storage. This prevents Kubernetes
from killing the pod during initial startup phase.

Changes:
- Add startupProbe configuration in values.yaml with sensible defaults
  - failureThreshold: 30 (allows up to 5 minutes for startup)
  - periodSeconds: 10
  - Uses tcpSocket check on http port
- Update deployment.yaml to include startupProbe from values
- Bump chart version 2.5.0 -> 2.5.1
- Add changelog annotation for Artifact Hub

Benefits:
- Prevents pod restarts during slow initial startup (large media libraries)
- Liveness and readiness probes remain responsive after successful startup
- Fully configurable and can be disabled by setting startupProbe: null
- No breaking changes, backward compatible

The startup probe gives Jellyfin up to 5 minutes (30 attempts * 10 seconds)
to complete initialization. After the first success, liveness and readiness
probes take over with their normal timing.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
This commit is contained in:
Aleksei SviridkinandClaude committed 2025-11-06 00:04:39 +03:00 Unverified
1 parent 2401a45bb1
commit df3e66c5f9
3 files changed
+23 -1

No files matched your search

+5 -1
View File
@@ -8,5 +8,9 @@ keywords:
- jellyfin
- media
- self-hosted
version: 2.5.0
version: 2.5.1
appVersion: 10.11.2
annotations:
artifacthub.io/changes: |
- kind: added
description: Add startup probe to prevent pod restarts during slow initial startup with large media libraries
@@ -108,6 +108,10 @@ spec:
hostPort: 1900
protocol: UDP
{{- end }}
{{- with .Values.startupProbe }}
startupProbe:
{{- toYaml . | nindent 12 }}
{{- end }}
livenessProbe:
{{- toYaml .Values.livenessProbe | nindent 12 }}
readinessProbe:
+14
View File
@@ -133,7 +133,20 @@ resources: {}
# cpu: 100m
# memory: 128Mi
# -- Configure startup probe for Jellyfin.
# This probe gives Jellyfin enough time to start, especially with large media libraries.
# After the startup probe succeeds once, liveness and readiness probes take over.
startupProbe:
tcpSocket:
port: http
initialDelaySeconds: 0
periodSeconds: 10
failureThreshold: 30
# With these defaults, Jellyfin has up to 5 minutes (30 * 10s) to start.
# Adjust failureThreshold if you have very large media libraries or slow storage.
# -- Configure liveness probe for Jellyfin.
# This probe is disabled during startup (startup probe handles initial checks).
livenessProbe:
initialDelaySeconds: 10
tcpSocket:
@@ -144,6 +157,7 @@ livenessProbe:
# periodSeconds: 10
# -- Configure readiness probe for Jellyfin.
# This probe is disabled during startup (startup probe handles initial checks).
readinessProbe:
initialDelaySeconds: 10
tcpSocket: