Deze pagina is vertaald door PageTurner AI (beta). Niet officieel goedgekeurd door het project. Een fout gevonden? Probleem melden →
Kubernetes-implementatie
Deze handleiding behandelt het implementeren van Jellyfin op Kubernetes met behulp van het officiële Helm-chart.
Vereisten
-
Kubernetes-cluster (v1.19+)
-
Helm 3.x geïnstalleerd
-
kubectlgeconfigureerd voor je cluster -
Voldoende opslag voor media en configuratie
-
Ingress-controller (bijv. traefik) voor externe toegang (vereist voor deze handleiding, zie officiële documentatie voor alternatieven)
Installatie
1. Helm-repository toevoegen
helm repo add jellyfin https://jellyfin.github.io/jellyfin-helm
helm repo update
2. Aangepaste installatie
Voor volledige installatie-instructies en configuratieopties, raadpleeg de officiële Jellyfin Helm-chart repository.
Maak een values.yaml bestand voor aanpassingen:
# values.yaml
replicaCount: 1
image:
pullPolicy: IfNotPresent
persistence:
config:
enabled: true
size: 5Gi
storageClass: ''
media:
enabled: true
size: 100Gi
storageClass: ''
ingress:
enabled: true
className: 'traefik'
hosts:
- host: jellyfin.example.com
paths:
- path: /
pathType: Prefix
resources:
limits:
cpu: 2000m
memory: 4Gi
requests:
cpu: 500m
memory: 1Gi
nodeSelector: {}
tolerations: []
affinity: {}
Installeer met aangepaste waarden:
helm install jellyfin jellyfin/jellyfin -f values.yaml
Configuratieopties
Servicetypes
Deze handleiding behandelt het ClusterIP-servicetype (standaard) voor interne toegang, met externe toegang via een ingress-controller. Alternatieven zijn LoadBalancer en NodePort-services.
Persistentie
Bestaande Persistent Volume Claims gebruiken
persistence:
config:
enabled: true
existingClaim: 'jellyfin-config-pvc'
media:
enabled: true
existingClaim: 'jellyfin-media-pvc'
Nieuwe PVC's aanmaken via Helm
persistence:
config:
enabled: true
size: 5Gi
storageClass: 'fast-ssd'
media:
enabled: true
size: 100Gi
storageClass: 'slow-hdd'
Ingress
Basis Ingress-configuratie
ingress:
enabled: true
className: 'traefik'
hosts:
- host: jellyfin.example.com
paths:
- path: /
pathType: Prefix
Geavanceerde Ingress met TLS
ingress:
enabled: true
className: 'traefik'
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.middlewares: default-jellyfin-buffering@kubernetescrd
hosts:
- host: jellyfin.example.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: jellyfin-tls
hosts:
- jellyfin.example.com
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: jellyfin-buffering
namespace: default
spec:
buffering:
maxRequestBodyBytes: 0
Jellyfin benaderen
Port Forwarding (ontwikkeling)
kubectl port-forward svc/jellyfin 8096:8096
Toegang via: http://localhost:8096
Externe toegang
Zodra ingress is geconfigureerd, bereik je Jellyfin via je geconfigureerde domein (bijv. https://jellyfin.example.com).
Monitoring
Health Checks
Het chart bevat readiness- en liveness-probes:
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 5
periodSeconds: 5
Metrieken
Schakel Prometheus-metingen in indien beschikbaar:
metrics:
enabled: true
serviceMonitor:
enabled: true
Probleemoplossing
Veelvoorkomende problemen
-
Permission Denied: Zorg voor de juiste security context voor mediatoegang
-
Opslagproblemen: Controleer of persistent volume claims zijn gebonden
-
Netwerktoegang: Controleer servicetype en ingress-configuratie
Debug-commando's
# Check pod status
kubectl get pods -l app.kubernetes.io/name=jellyfin
# View logs
kubectl logs -f deployment/jellyfin
# Check service
kubectl get svc jellyfin
# Describe pod for events
kubectl describe pod -l app.kubernetes.io/name=jellyfin
Upgraden
# Update repository
helm repo update
# Upgrade installation
helm upgrade jellyfin jellyfin/jellyfin
# Check upgrade status
helm status jellyfin
Verwijderen
# Remove Helm release
helm uninstall jellyfin
# Clean up persistent volumes (if needed)
kubectl delete pvc -l app.kubernetes.io/name=jellyfin
Geavanceerde configuratie
Hardwareversnelling
Voor GPU-versnelling, voeg apparaattoegang en security context toe:
securityContext:
privileged: true
resources:
limits:
gpu.intel.com/i915: 1
# or nvidia.com/gpu: 1
extraVolumes:
- name: dri
hostPath:
path: /dev/dri
extraVolumeMounts:
- name: dri
mountPath: /dev/dri
Meerdere mediabronnen
Koppel meerdere mediabronnen met extra volumes:
volumes:
- name: movies
persistentVolumeClaim:
claimName: movies-pvc
- name: tv
persistentVolumeClaim:
claimName: tv-pvc
volumeMounts:
- name: movies
mountPath: /movies
- name: tv
mountPath: /tv
Aangepaste omgevingsvariabelen
extraEnvVars:
- name: JELLYFIN_PublishedServerUrl
value: 'https://jellyfin.example.com'
- name: JELLYFIN_CACHE_DIR
value: '/cache'
Voor meer configuratieopties, zie de Jellyfin Helm-chart documentatie.