目录

Longhorn系列-02-Longhorn能否部署到专用的节点

概述

Longhorn 是一个容器集群的分布式块存储方案。按照默认的部署方式,Longhorn 的组件会部署到所有节点,万一整个 Kubernetes 集群中,只有少数节点是符合做存储节点的条件的呢?如果把 Longhorn 的组件也部署到不符合条件的节点,那么后面维护以及分配存储空间的时候,就会有很多麻烦。

Longhorn 作为分布式存储,当然是有点复杂的…作为集群的使用者,当然会有一种想法就是能否在集群中只用几个节点部署 Longhorn,万一出问题了,不影响用户在节点上的其他工作负载。

专用节点

然而理想很美好,现实往往就不如人意了,可以阅读一下下面的文章. 虽然文章提出了可以在几个节点上部署 Longhorn 的组件,看起来是满足我们的需求,但是实际上还有一句话。

Longhorn components are only deployed on node-1, node-2, and node-3. Workloads that use Longhorn volumes can only be scheduled on node-1, node-2, and node-3.

这个特点,有点难以接受,在看代码之前,还想看看有没有转机,于是去 issue 区找一下,看到这个讨论

总之,很遗憾,如果只想局限几个节点部署 Longhorn,其他节点除了 CSI 插件部署后而不想部署其他 Longhorn 的组件,比如 Longhorn Manager,那肯定不行的,因为像 longhorn-csi-plugin 是负责做 mount 这样的操作,这也是 Longhorn Manager 的作用(用于创建管理卷等),并且 Longhorn 创建节点的时候还会默认创建一个磁盘位置,并且默认是开通 AllowScheduling

/longhorn%E7%B3%BB%E5%88%97-02-longhorn%E8%83%BD%E5%90%A6%E9%83%A8%E7%BD%B2%E5%88%B0%E4%B8%93%E7%94%A8%E7%9A%84%E8%8A%82%E7%82%B9/img.png

综上所述,如果希望集群所有节点都能用 Longhorn,Longhorn Manager 是肯定得作为 DS 部署到每个节点的。当然,可以先部署了,然后在 Longhorn UI 上关掉指定节点的 AllowScheduling,这样也可以不使用其他节点的存储了。

警告
本文最后更新于 2022年11月9日,文中内容可能已过时,请谨慎参考。