V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
moxuanyuan
V2EX  ›  Linux

目前折疼 pve lxc 遇到的问题

  •  
  •   moxuanyuan · 276 天前 · 2437 次点击
    这是一个创建于 276 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我是在一台 arm vps 上安装 pve 来管理 lxc ,下面遇到的问题真花了很多时间才能找到问题所在。这些问题在 x86 平台,依然存在,并非 arm 平台的兼容性问题。

    当然,如果我用 x86 的 pve 会少走很多弯路。

    1. docker in lxc 的 storage driver 问题

    docker 在 lxc 中默认的 storage driver 是 vfs ,vfs 性能差和无层复用占用空间大等问题。网上有教程教如何将 storage driver 改为性能更好的 overlay2 。

    但问题来了,几乎所有教程都没有提及到要 docker in lxc 使用 overlay2 ,宿主机内核必须要是 5.11 及以上才能应用成功,否则 storage driver 改为 overlay2 后,docker 无法启动。

    而 debian 11 默认安装的内核是 5.10 ,这样导致类似我这样的小白,花了大量时间研究这个问题,才无意中发现问题所在,过程是非常痛苦及浪费时间。

    2. pve 8 与 lxc 官方某些镜像的兼容性问题

    刚开始,我是用 pve 7 arm 版(佛西大佬维护的版本),因为 pve 官方的 ct 模板并不提供 arm 版,所以我只能去 linuxcontainers.org 下载 arm 的镜像(我下的是 debian 12 ),然后创建 lxc 容器。

    创建过程没什么问题。后来因为上面 storage driver 问题通过升级内核解决后,我就直接将 arm vps 重装 debian 12 ,然后安装 pve 8 。依然用 linuxcontainers.org 下载 arm 的镜像去创建容器,但此时无法创建成功,

    错误信息提示“unable to open file '/etc/network/interfaces.tmp.13283' - No such file or directory”,无论 debian 11 还是 12 的镜像都一样有这个问题。

    我尝试在一台 x86 pve 8 的主机使用 linuxcontainers.org 下载 x86 的镜像去创建容器,也有同样问题。但 x86 pve 8 使用 pve 官方的 debian 12 x86 镜像,是没有问题,可以创建成功。

    我在上网搜索了一下,在 forum.proxmox.com 也有几个人提及这个问题( 提及的是 mint 和 debian 镜像 ),发贴日期都是最近几个月。

    后来,我发现在 pve 8 arm 可以使用 alpine 镜像创建成功。奇怪的是,之前 pve 7 arm 版中使用 alpine cloud 镜像,重启容器后网络配置都被还原。

    所以这些兼容性问题,真是令人头疼.

    23 条回复    2023-08-09 11:20:27 +08:00
    ltkun
        1
    ltkun  
       276 天前
    工欲善其事 在 arm 下的 lxc 里面还要讲性能有点过分了哈
    我现在两台 128G 的家用机组的 pve 在考虑要不要上服务器 内存上 256 512 1024 才好玩
    cest
        2
    cest  
       276 天前
    你图免费的 arm vps
    他们图小白鼠
    lhbc
        3
    lhbc  
       276 天前
    如果这么简单就能跑在 arm 上,官方可能早就支持了
    要玩 homemade 还是有门槛的

    图简单就跑 docker 呗
    flyqie
        4
    flyqie  
       276 天前 via Android
    其实。。

    主要的原因是你对 lxc 不熟。

    不建议用任何 pve 非官方版本,因为可能会出现很多不兼容问题,尤其是新手,遇到问题根本没法处理,走一堆弯路。
    flyqie
        5
    flyqie  
       276 天前 via Android
    @lhbc #3

    其实 pve 官方想移植的话 lxc 这块不难,qemu 这块没深入研究过,但应该也没啥特别大的难点。

    主要是没必要,目前 pve 用户主要还是 x86 ,极少数会上 arm ,为 arm 没有特别大的实用意义。
    lhbc
        6
    lhbc  
       276 天前
    @flyqie #5 我觉得主要是工作量的问题,毕竟使用的底层技术都已经移植到 ARM64
    就是不知道各种管理工具、接口需要多少时间去适配和测试了
    moxuanyuan
        7
    moxuanyuan  
    OP
       276 天前
    @lhbc #6 我上面提及的问题,似乎跟 arm 没关,x86 也会遇到
    moxuanyuan
        8
    moxuanyuan  
    OP
       276 天前
    @flyqie #4 哈哈,没办法,公司有一台 arm vps 将在 7.31 到期,不续费,我拿来练手
    flyqie
        9
    flyqie  
       276 天前 via Android
    @lhbc #6

    是的,受众太小。。
    flyqie
        10
    flyqie  
       276 天前 via Android
    @moxuanyuan #8

    公司上 arm vps 干啥用的。。

    挺好奇,正常来说 x86 应该能满足需求吧?
    moxuanyuan
        11
    moxuanyuan  
    OP
       276 天前
    @flyqie #10 就是买来测试,便发现鸡肋,就不用
    bt7vip
        12
    bt7vip  
       276 天前 via Android
    你的矛盾点在 lxc ,而且特权容器会污染宿主内核,有些调用内核的应用只能开特权容器,包括挂载宿主文件夹,这些限制个人认为已经将 lxc 的选择降到很低,目前,我是将
    bt7vip
        13
    bt7vip  
       276 天前 via Android
    lxc 仅用于不需要内核,不需要特权的应用,特权容器只将宿主存储用 nfs 共享出去,其他涉及调用内核的应用用发行版 cloud 镜像起虚拟机,debian 的虚拟机起来只需要几百兆的内存。

    而且官方不建议 lxc 装 docker ,凡事从简单到复杂,上来就死磕容易得不偿失,浪费大量时间
    Jirajine
        14
    Jirajine  
       276 天前
    那你就直接用 lxc ,不要用 pve 。
    moxuanyuan
        15
    moxuanyuan  
    OP
       276 天前
    @bt7vip #12 docker in lxc 可以非特权,目前在 x86 上运行没遇到问题,arm 还在测试中
    greenskinmonster
        16
    greenskinmonster  
       276 天前
    @bt7vip #13 "官方不建议 lxc 装 docker" 这个来源是哪?什么理由呢?
    moxuanyuan
        17
    moxuanyuan  
    OP
       276 天前
    greenskinmonster
        18
    greenskinmonster  
       276 天前
    @moxuanyuan #17 看到了,谢谢。不过我觉得 lxc 里面的 docker 还是挺方便的,尤其是 plex 这种需要使用宿主机显卡硬件解码的场景。宿主机隔离和实时迁移对家庭环境来说反而不是很必需,更适用于业务生产环境。
    Masoud2023
        19
    Masoud2023  
       276 天前
    hos 发布这个内容需要你已经注册满 1004 天 tloc 来的?

    大家都是裸机直接跑 pve ,你这么嵌套三层到底有什么意义我没想通。

    要是逻辑+lxc 里面跑 docker 我确实能理解。VPS 玩容器化就老老实实跑 docker ,要图形面板就装个 portainer ,非要**在 VPS 上**折腾那个 pve 有什么意义?
    faninx
        20
    faninx  
       264 天前
    为啥我 docker in lxc 的 storage driver 是 overlay2 ,反而遇到了一些问题,比如 nginx-proxy-manager 不能用,搜解决方案是让我换 vfs 。
    moxuanyuan
        21
    moxuanyuan  
    OP
       264 天前
    @faninx #20 內核 5.11 以上就會是 overlay2
    moxuanyuan
        22
    moxuanyuan  
    OP
       264 天前
    @faninx #20 我 docker in lxc ,overlay2 ,用 nginx-proxy-manager 沒問題
    ccxuy
        23
    ccxuy  
       262 天前
    @Masoud2023 我有个别的需求不知道好不好实现,有些物理机不受控,但是分配了几台可以自己控制的虚拟机,里面可能自己还要再启动虚拟机验证东西,最好能有个 UI 面板能管理 qemu 机器,通过几种模板来启动,不知道能实现么?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3028 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:47 · PVG 21:47 · LAX 06:47 · JFK 09:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.