在一个节点上调度pod,并在另一个节点上访问pv

在一个节点上调度pod,并在另一个节点上访问pv

我在 RPi4 上运行一个 k3s 集群,具有异构配置(一个节点具有大容量但速度很慢的 HDD,另一个节点具有 SSD 驱动器,第三个节点只有 SD 卡)。

我有持久卷和“本地路径”类型的声明,根据需要附加到节点和吊舱。

我面临这样一种情况:我需要在没有磁盘的节点上安排一个 pod 来处理存储在带有 ssd 磁盘的节点中的数据(使用 ffmpeg 将一些视频文件重新编码为 mp4,由于这是一个昂贵的过程,我想在空闲节点上执行此操作并且不会减慢运行 ssd 的节点的速度)。

是否可以透明地从其他节点挂载 PV?我需要使用一些 nfs 吗?是否有更先进的卷类型可以在裸机 RPi4 中用来做我想做的事情?

查看文档并没有太大帮助(有大量不同的持久卷类型,但描述的用例并不多)。

谢谢

答案1

我觉得你可能感兴趣长角牛计划
它是任何 Kubernetes 集群的持久存储实现,它使用 Kubernetes 节点的现有磁盘为 Kubernetes pod 提供复制且稳定的存储。

正如所述Longhorn github

Longhorn 轻量、可靠且功能强大。您可以使用一个 kubectl apply 命令或使用 Helm 图表在现有 Kubernetes 集群上安装 Longhorn。安装 Longhorn 后,它会为 Kubernetes 集群添加持久卷支持。

最重要的是,您可以使用直观的 GUI 仪表板来自定义长角牛满足您的需求。

笔记:目前 Longhorn 仅支持amd64

安装

在下面的例子中,我将向你展示如何安装长角牛

首先,您必须open-iscsi在每个集群节点上安装。您需要使用以下命令进行安装:

apt-get install open-iscsi

接下来应用longhorn.yaml安装长角牛

kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml

然后创建一个longhorn StorageClass(您可以稍后使用来自定义它ConfigMap

kubectl apply -f https://raw.githubusercontent.com/rancher/longhorn/master/deploy/longhorn.yaml

这就是我们开始使用所需的一切长角牛:)

Longhorn 用户界面

正如我之前描述的,我们可以使用有用的 GUI 仪表板,这里您可以找到如何访问它。此外,您可能需要使用如下方法
将仪表板暴露给外界Ingress这里

使用Longhorn UI仪表板非常直观,例如在“节点”选项卡中,您可以轻松指定专用于提供存储的节点。

longhorn存储类

您可以longhorn StorageClass通过longhorn-storageclass ConfigMaplonghorn-system命名空间中进行编辑来自定义,例如,我将numberOfReplicas参数从3(默认)编辑为1

root@kmaster:~# kubectl describe sc longhorn
Name:            longhorn
IsDefaultClass:  No
Annotations:     longhorn.io/last-applied-configmap=kind: StorageClass
apiVersion: storage.k8s.io/v1
...
parameters:
  numberOfReplicas: "1"
  staleReplicaTimeout: "2880"
  fromBackup: ""
...

相关内容