TrueNAS 24.10 升级和应用迁移 Docker 小记

用 TrueNAS Scale 折腾有一段时间了,最近发现 24.10 正式版已经发布了。看来一下官网发行说明,主要有几个重大改进:RAIDZ vdev支持扩展硬盘、应用的底层从 K3S 换为了 Docker 部署管理、UI改进(支持全局搜索了)。

目前网上能搜到关于新版的资料不多,但因为很想试试新功能,还是直接升级了。毕竟算是大版本升级,也算是赌了一把(如果是生产环境用的 NAS 不建议这么干)。

实际上是曾经 K3S 部署应用遇到了奇怪的问题,折腾了很长时间都搞不定。而平时还是会把 NAS 当个轻量级服务器来用的(比如 Aria、qBittorrent 等),有点迫不及待尝试 TrueNAS 自带的 Docker 了。

升级前准备

目前官网没有直接给下载镜像的链接,不过可以在系统后台 系统 → 更新 里切换一下通道,然后直接升级。

按照官网的说明,如果是从旧版本系统升级到 24.10 (非全新安装)要先更新到 24.04.2.3 (Dragonfish),再从 24.04.2.3 升级到 24.10。

另外从 24.10 开始系统不再内置 NVIDIA 显卡驱动,不过可以在更新后从 web 界面更新,N卡用户需要留意一下。

24.10 将应用后端更换为了 Docker ,对于 TrueNAS catalog 中的应用是支持从 24.04 的 K3S 中自动迁移镜像+容器数据到 24.10 的 Docker 里。不过自己添加的 github 应用(就是第三方应用)则是不能自动迁移的。

在升级前还需要为应用做以下准备:

  • 将应用(K3S中的)升级到最新,以便后续系统升级后能自动迁移。
  • 检查应用配置中(在应用页面选中后点“编辑”打开的页面)有没有指定了 Host Path 存储模式且不存在的路径。有的话一定要先移除,不然的话升级系统后会导致应用自动迁移失败(官网没写,在这踩坑了)。
  • 如果应用的数据集(ix-applications)存放在一个开启加密的存储池里,升级前先移到无加密的存储池中,不然无法自动迁移。
  • 如果有应用设置了 Host Path 存储模式下打开 ACL,firewalls、routers 等网络设置(Network Settings)的应用,都先关掉,再升级系统。

至于虚拟机,升级后测试了没发现什么影响,应该不需要单独做什么。

然后务必记得导出一份系统设置的备份(其实点升级按钮的时候系统也会提示),然后从后台页面升级即可。

升级后

顺利的话,第一次进到系统后大部分工作都完成了。检查一下存储池、SMB、虚拟机、服务等是否都正常即可。

注意一下,更新到24.10后存储池是可以升级的(可能是因为OpenZFS带来的新功能)。不过此操作不可逆,建议用一段时间确认 24.10 对自己来说没有严重问题了,再去升级存储池。

设置 Docker 和处理应用迁移失败

正常来说,应用自动迁移很可能会失败,以及遭遇网络问题无法拉取镜像。不过好在 Docker 出的问题比 K3S 容易解决很多。

先处理拉取镜像的问题。

由于 Docker 不会跟随 TrueNAS 网络设置中 Proxy,要单独设置一下。先进入 TrueNAS 后台,系统→命令行,先 sudo su 切换到root用户,然后执行以下命令创建一个文件

cd /etc/systemd/system/docker.service.d/
nano http-proxy.conf

文件内容为以下(后面的 ip:port 替换为自己的环境中的代理):

[Service]
Environment="HTTP_PROXY=http://ip:port"
Environment="HTTPS_PROXY=http://ip:port"

保存后目录下应该有这两个文件

最后重启 Docker 服务:

systemctl daemon-reload
systemctl restart docker

这样可以解决 Docker 拉取镜像的问题了。

接着用 midclt call -job k8s_to_docker.migrate poolname (最后的“poolname”替换成应用数据集所在的存储池)命令,重新执行失败的迁移任务。

成功或者失败的结果,都会在下面显示出来(比如下面这张图就是迁移 jellyfin 失败了):

一般来说把升级系统前的准备都做好了,迁移应用失败的概率会很少。真的遇到失败了,就只能根据错误信息(输出结果JSON信息中“error”字段)去判断可能出问题的地方了。

如果比较倒霉,实在找不到解决办法,就直接去应用页面重新装吧……

查看新装应用失败原因

如果在应用界面安装新界面时失败了,直接命令行里 tail -f /var/log/app_lifecycle.log 看报错信息即可。Docker 在哪一步出错了(比如拉取镜像、网络异常等)会直接显示出来的,这点上来说要比 以前的 K3S 要好排查一点。

当应用也迁移完成后,检查无误,就可以去数据集里删掉原来的K3S(ix-applications)数据集了。

除特别注明外,本站内容皆为 咸鱼先锋 原创,可自由引用,但请注明来源和链接。
https://xyuxf.com/archives/2289
欢迎关注 咸鱼先锋 (微信号公众号:xyuxf),获取干货推送
THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录