Doorgaan naar hoofdinhoud
Onofficiële Beta-vertaling

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

  • kubectl geconfigureerd 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

  1. Permission Denied: Zorg voor de juiste security context voor mediatoegang

  2. Opslagproblemen: Controleer of persistent volume claims zijn gebonden

  3. 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.