Kyoo Helm Chart部署:在Kubernetes集群中规模化运行
Kyoo是一个功能强大的媒体库解决方案,通过Helm Chart在Kubernetes集群中部署可以实现规模化运行和轻松管理。本文将详细介绍如何使用Kyoo Helm Chart在Kubernetes环境中快速部署和配置这个媒体库系统。## 什么是Kyoo Helm Chart?Kyoo Helm Chart是一个专为Kubernetes设计的部署包,它将Kyoo的多个微服务(包括api、
Kyoo Helm Chart部署:在Kubernetes集群中规模化运行
Kyoo是一个功能强大的媒体库解决方案,通过Helm Chart在Kubernetes集群中部署可以实现规模化运行和轻松管理。本文将详细介绍如何使用Kyoo Helm Chart在Kubernetes环境中快速部署和配置这个媒体库系统。
什么是Kyoo Helm Chart?
Kyoo Helm Chart是一个专为Kubernetes设计的部署包,它将Kyoo的多个微服务(包括api、auth、front、scanner和transcoder)打包成一个统一的部署单元。通过Helm Chart,用户可以轻松配置、部署和管理Kyoo在Kubernetes集群中的运行。
Kyoo的架构包括多个相互关联的工作负载,利用PostgreSQL等多种技术。这个Helm Chart旨在简化基本设置的配置,同时提供高级自定义选项。命名和设计遵循diagrams中描述的结构。
准备工作
在开始部署之前,请确保您的环境满足以下要求:
- 一个运行中的Kubernetes集群
- Helm 3.x已安装
- 集群中已配置存储类(StorageClass)
- 具有创建命名空间、部署、服务等资源的权限
快速开始:一键部署Kyoo
以下示例展示了如何使用子图表部署Kyoo及其依赖项,使用单个Postgres实例并初始化多个数据库。
首先,创建一个myvalues.yaml文件,内容如下:
kyoo:
address: https://kyoo.mydomain.com
postgres:
enabled: true
extraObjects:
- apiVersion: v1
kind: Secret
metadata:
name: bigsecret
type: Opaque
stringData:
postgres_user: kyoo_all
postgres_password: watchSomething4me
scanner_apikey: triquarter4u
- kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: media
spec:
accessModes:
- "ReadOnlyMany"
resources:
requests:
storage: "3Gi"
然后执行以下命令进行部署:
helm upgrade kyoo oci://ghcr.io/zoriya/helm-charts/kyoo --install --values myvalues.yaml
这个命令会使用提供的配置文件部署或升级Kyoo。--install参数表示如果Kyoo未部署,则进行安装;如果已部署,则进行升级。
自定义配置:满足您的特定需求
Kyoo Helm Chart提供了丰富的配置选项,可以根据您的具体需求进行自定义。下面是一个常见的生产环境配置示例:
# specify external hosts for resources
global:
postgres:
shared:
host: postgres-cluster01.databases
# specify hardware resources
transcoder:
kyoo_transcoder:
resources:
limits:
nvidia.com/gpu: 1
kyoo:
address: https://kyoo.mydomain.com
# specify hardware acceleration profile (valid values: disabled, vaapi, qsv, nvidia)
transcoderAcceleration: nvidia
media:
volumes:
- name: media
nfs:
server: mynasserver
path: /spin0/media
ingress:
enabled: true
host: kyoo.mydomain.com
tls: true
这个配置示例展示了如何:
- 指定外部PostgreSQL主机
- 配置硬件资源限制(如GPU)
- 启用硬件加速转码
- 配置NFS存储卷用于媒体文件
- 启用Ingress并配置TLS
配置文件详解
Kyoo Helm Chart的配置文件(chart/values.yaml)包含了多个关键部分:
- global: 配置共享的微服务和子图表设置,包括镜像仓库、安全上下文等
- kyoo: Kyoo应用程序设置,包括地址、认证配置、转码器设置等
- media: 配置需要访问媒体的工作负载,包括卷和挂载路径
- 各微服务配置:api、auth、front、scanner、transcoder等微服务的单独配置
必要的Secret配置
默认情况下,Chart期望使用名为bigsecret的Kubernetes Secret。这个Secret应包含以下内容:
apiVersion: v1
kind: Secret
metadata:
name: bigsecret
type: Opaque
stringData:
tmdb_apikey: ""
tvdb_apikey: ""
tvdb_pin: ""
postgres_user: kyoo_all
postgres_password: watchSomething4me
scanner_apikey: triquarter4u
您需要根据实际情况填写这些值,特别是数据库凭证和API密钥。
部署架构:了解Kyoo在Kubernetes中的组件
Kyoo在Kubernetes中的部署包含多个组件,它们协同工作以提供完整的媒体库解决方案:
核心微服务
- api: Kyoo的核心API服务,处理媒体数据的管理和查询
- auth: 处理用户认证和授权
- front: 前端Web界面,提供用户友好的媒体浏览和播放体验
- scanner: 扫描媒体文件并提取元数据
- transcoder: 转码媒体文件以适应不同的播放设备和网络条件
数据存储
Kyoo使用PostgreSQL数据库存储元数据和用户信息。Helm Chart提供了两种选择:
- 使用内置的PostgreSQL子图表(适合测试和小型部署)
- 连接到外部PostgreSQL集群(推荐用于生产环境)
媒体存储
媒体文件通常存储在NFS或其他共享存储中,通过PersistentVolumeClaim挂载到相关的Pod中。
高级配置:优化您的Kyoo部署
硬件加速转码
如果您的Kubernetes集群中有GPU资源,可以启用硬件加速转码以提高性能:
kyoo:
transcoderAcceleration: nvidia
transcoder:
kyoo_transcoder:
resources:
limits:
nvidia.com/gpu: 1
支持的加速配置文件包括:disabled、vaapi、qsv和nvidia。
调整资源分配
根据您的集群资源情况,可以调整各个组件的资源分配:
api:
kyoo_api:
resources:
requests:
cpu: 1
memory: 1Gi
limits:
cpu: 2
memory: 2Gi
配置Ingress
为了从集群外部访问Kyoo,需要配置Ingress:
ingress:
enabled: true
ingressClassName: nginx
host: kyoo.mydomain.com
tls: true
tlsSecret: kyoo-tls-cert
维护与升级:保持Kyoo最新
升级Kyoo
要升级Kyoo到最新版本,只需执行:
helm upgrade kyoo oci://ghcr.io/zoriya/helm-charts/kyoo --install --values myvalues.yaml
Helm会自动处理配置的变更和版本的升级,确保服务的平稳过渡。
备份数据
对于生产环境,建议定期备份PostgreSQL数据库。您可以使用Kubernetes CronJob来自动化备份过程:
extraObjects:
- apiVersion: batch/v1
kind: CronJob
metadata:
name: kyoo-db-backup
spec:
schedule: "0 3 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: backup
image: postgres:14
command: ["pg_dump", "-h", "postgres-cluster01.databases", "-U", "kyoo_all", "kyoo_api"]
env:
- name: PGPASSWORD
valueFrom:
secretKeyRef:
name: bigsecret
key: postgres_password
常见问题与解决方案
媒体文件无法被扫描
如果scanner无法访问媒体文件,请检查:
- 确保媒体卷已正确挂载
- 检查Pod的权限是否足够访问媒体文件
- 查看scanner的日志以获取更多信息
转码性能不佳
如果转码速度慢,可以尝试:
- 启用硬件加速
- 调整转码预设(chart/values.yaml中的
transcoderPreset) - 增加transcoder的CPU和内存资源
无法访问Web界面
如果无法访问Kyoo的Web界面,请检查:
- Ingress配置是否正确
- front服务是否正常运行
- 网络策略是否允许外部访问
总结
通过Helm Chart在Kubernetes集群中部署Kyoo是一种高效、可扩展的方式,可以轻松管理和扩展您的媒体库解决方案。无论是家庭使用还是小型企业部署,Kyoo都能提供强大的媒体管理和播放体验。
使用本文提供的指南,您可以快速上手Kyoo的部署和配置,并根据您的具体需求进行自定义。随着您的媒体库的增长,Kyoo和Kubernetes的组合将能够轻松应对不断增加的负载和需求。
开始您的Kyoo之旅吧!只需几个简单的步骤,您就能拥有一个功能齐全、可扩展的媒体库系统。
更多推荐

所有评论(0)