Jellyfin 上 K8s 前,先把镜像、PVC 和权限排一遍

简介: 本文记录Jellyfin从Docker Compose迁移至K8s测试环境的典型问题排查:镜像拉取慢、PVC未绑定致媒体目录为空、容器用户权限不足、路径配置错误等。强调K8s中“宿主机→PV→PVC→volumeMount→容器路径”的分层模型,须逐层验证,避免误判。

最近把一个媒体服务从单机 Docker Compose 迁到 K8s 测试环境。服务本身不复杂,但迁移过程中踩到几个很典型的问题:

  • 镜像拉取慢。
  • Pod 启动后媒体目录为空。
  • PVC 挂载正常,但容器用户读不到文件。
  • 页面能打开,但扫描不到媒体库。

这篇只记录排查过程。

目标结构

单机 Compose 里通常是:

volumes:
  - /data/media/movies:/data/movies:ro

迁到 K8s 后,路径关系变成:

宿主机/存储系统 → PV → PVC → Pod volumeMount → 容器内路径

所以不能只问“目录在不在”,还要看 PVC 有没有正确挂进容器。

镜像预检

先不急着 apply Deployment,先确认节点能拉镜像:

kubectl get nodes
kubectl run image-check --image=<team-registry>/jellyfin:latest --restart=Never --command -- sleep 3600
kubectl describe pod image-check
kubectl delete pod image-check

如果这里已经 ImagePullBackOff,就先处理镜像仓库、DNS、代理或节点网络。

不要把镜像拉取失败误判成应用配置问题。

PVC 是否绑定

看 PVC:

kubectl get pvc
kubectl describe pvc media-pvc

状态必须是 Bound

如果 PVC 没绑定,Pod 即使创建了,也不可能正常读取媒体目录。

Pod 里看挂载路径

Deployment 示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: jellyfin
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jellyfin
  template:
    metadata:
      labels:
        app: jellyfin
    spec:
      containers:
        - name: jellyfin
          image: <team-registry>/jellyfin:latest
          ports:
            - containerPort: 8096
          volumeMounts:
            - name: media
              mountPath: /data/movies
              readOnly: true
            - name: config
              mountPath: /config
      volumes:
        - name: media
          persistentVolumeClaim:
            claimName: media-pvc
        - name: config
          persistentVolumeClaim:
            claimName: jellyfin-config-pvc

进入 Pod:

kubectl exec -it deploy/jellyfin -- sh
ls -lah /data
ls -lah /data/movies

如果 /data/movies 为空,要回到 PV/PVC 和 StorageClass 排查。

应用后台填写容器内路径

K8s 里也一样。Jellyfin 后台应该填写:

/data/movies

而不是节点上的真实路径,也不是存储系统里的路径。

应用只认识容器内路径。

权限排查

如果容器内能看到目录,但应用读不到,继续看权限:

kubectl exec -it deploy/jellyfin -- id
kubectl exec -it deploy/jellyfin -- ls -lah /data/movies

必要时通过 securityContext 指定用户:

securityContext:
  runAsUser: 1000
  runAsGroup: 1000
  fsGroup: 1000

不同存储插件对 fsGroup 的支持不完全一样,实际要结合 StorageClass 验证。

Service 和 Ingress 放到后面

如果媒体库为空,先别急着排 Ingress。

我的顺序是:

  1. 镜像能否拉取。
  2. Pod 是否 Running。
  3. PVC 是否 Bound。
  4. 容器内是否看到 /data/movies
  5. 容器用户是否能读文件。
  6. Jellyfin 后台是否填写容器内路径。
  7. 最后再看 Service / Ingress。

Ingress 主要影响页面访问,不是媒体库扫描的第一嫌疑。

小结

Jellyfin 从 Docker Compose 迁到 K8s,最容易错的不是 YAML 语法,而是路径模型变了。

Compose 里是宿主机路径挂到容器路径。
K8s 里是 PV/PVC 再挂到容器路径。

应用最终看到的仍然只有容器内路径。

所以排查时别跳层:先镜像,再 PVC,再 volumeMount,再权限,最后才是应用和 Ingress。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes PyTorch 算法框架/工具
2026年4月实测:我把公司K8s集群的Docker镜像拉取速度提升了20倍
上周公司AI训练节点扩容,PyTorch镜像直连拉取32分钟/个,8台集群部署几近瘫痪。实测5种加速方案后,发现小众但稳定的「docker.1ms.run」服务——3.8GB镜像仅需1分48秒,提速18倍!一键配置Docker/Containerd,CI/CD构建从20分钟回归3分半。2026年境内镜像拉取困局,务实解法在此。(239字)
|
2月前
|
存储 编解码 人工智能
阿里云服务器2核4G和4核8G租用价格:不同实例收费价格标准及最新活动价格
阿里云服务器提供2核4G与4核8G多种实例规格,价格从9.9元/月起,企业用户享199元/年特惠,满足不同性能需求。实例包括经济型e实例、通用算力型u1/u2i/u2a实例、计算型c9i实例等,适用于轻量级应用到企业级通用应用、视频处理、AI训练等多种场景。用户可根据业务需求选择实例规格与计费模式,长期使用建议包年包月。阿里云还提供优惠券和补贴活动,进一步降低成本,适合不同负载和预算的用户。
625 3
|
2天前
|
人工智能 运维 网络安全
我这半年实际使用过的 4 款 SSH 工具体验分享
本文精选4款主流SSH工具:轻量稳定的PuTTY、Windows全能神器MobaXterm、跨平台云同步的Termius,以及AI驱动的智能终端Aeroshell,覆盖从经典运维到AI辅助新场景,助开发者与运维人员高效管理服务器。(239字)
325 1
我这半年实际使用过的 4 款 SSH 工具体验分享
|
2天前
|
人工智能 缓存 运维
重磅发布丨云监控 AI Agent 可观测,企业生产级 Agent 首选全域观测平台
AI Agent 可观测是面向企业生产级 Agent 的全域观测平台,提供从接入、建模、分析到 Agentic Ops 的全域观测和分析能力,帮助企业彻底打开 Agent 的黑箱,实现 Agent 执行过程的可追踪、可诊断、可优化。
227 10
|
2天前
|
API
阿里云微服务引擎 MSE 及 API 网关 2026 年 5 月产品动态
阿里云微服务引擎 MSE 及 API 网关 2026 年 5 月产品动态。
|
2天前
|
人工智能 缓存 弹性计算
阿里云服务器2核4G5M199元解析:独享型u1实例,性能、适用场景、购买和续费规则介绍
阿里云通用算力型u1实例(ecs.u1-c1m2.large)2核4G、5M带宽、80G ESSD Entry云盘,活动特惠价仅199元/年(官网价3498.36元),企业新老用户同享,续费同价至2027年3月31日,每人限购1台。该实例采用独享型架构,搭载Intel至强可扩展处理器,内网带宽1Gbit/s、收发包30万PPS、云盘IOPS 1万,性能稳定,适合企业官网、中小Web应用、轻量数据库及开发测试等场景。
|
2天前
|
Java Windows
windows版jdk版本管理工具
JC-jEnv 是 Windows 下轻量级 Java 版本管理工具,支持本地 JDK 管理、远程一键安装(如 `jvms install 21.0.4`)、快速切换(`jvms switch`)及项目级版本隔离,操作简洁,无需手动配环境变量。
180 4
|
1月前
|
JSON 前端开发 测试技术
Kimi-k2.6 流式回包乱序后,我这样接入 ​D​М‌X​Α‌РΙ
kimi-k2.6 不止于聊天,其核心价值在于“可执行交付”:统一支持代码生成、长时程任务、Agent协作、文档→技能复用及多格式输出,具备工程级组合能力。它契合企业对“单模型多工位”的刚需——在研发、内容中台等场景中,稳定闭环完成需求拆解、编码、文档整理等多步任务。真正落地需依托DMXAPI网关实现标准化API集成,解决Web路径的不确定性,让模型能力成为可度量、可审计、可持续的生产基础执行层。(239字)
|
1月前
|
人工智能 开发框架 Java
Spring 接入 DeepSeek:Java 团队的 AI
Spring携手DeepSeek标志Java生态AI化加速。但仅模型接入远不够,企业亟需一体化AI框架。向量空间JBoltAI应运而生:深度兼容Spring,支持DeepSeek等多模型,内置RAG、Agent编排、私有知识库等能力,助力Java团队高效落地企业级AI应用。(239字)
160 5
|
1月前
|
人工智能 Linux API
hermes agent 安装教程:安装优化 + 模型配置 + 工具启用指南
Hermes Agent 是 Nous Research 于 2026 年发布的开源自主进化 AI 智能体框架(MIT 协议,Python 编写)。它通过任务沉淀技能、持久化记忆、原生多工具集成与并行子智能体,实现“越用越强”。支持 Linux/macOS/WSL2,安装便捷,面向个人与企业的新一代私有化 AI 助手。