K8S集群实战部署NFS与Longhorn存储方案 (K8s Cluster Practical Deployment of NFS and Longhorn Storage Solution)
在现代云原生应用中,存储是必不可少的组件。尤其是对于生产环境中的 Kubernetes(K8s)集群,可靠的存储解决方案至关重要。本文将介绍如何在K8s 集群中部署并配置文件存储和对象存储解决方案,具体包括 Longhorn、NFS。所有这些存储组件都将通过 Helm 安装,简化了部署过程,提高了管理效率。
K8S集群实战部署存储方案 - NFS与Longhorn
引言
在前面的文章中,我们已经通过 Vagrant 创建了集群所需的虚拟机环境,并通过 kubeadm 部署并验证了基于 Kube-Vip 的高可用集群。接下来,我们继续在集群中部署配置存储组件。
在现代云原生应用中,存储是必不可少的组件。尤其是对于生产环境中的 Kubernetes(K8s)集群,可靠的存储解决方案至关重要。本文将介绍如何在K8s 集群中部署并配置文件存储和对象存储解决方案,具体包括 Longhorn、NFS。所有这些存储组件都将通过 Helm 安装,简化了部署过程,提高了管理效率。
存储组件的选择
-
文件存储:Longhorn 和 NFS。
-
Longhorn:Longhorn 是一个轻量级、高可用的分布式块存储系统,特别适用于 Kubernetes 环境。它提供易于使用的图形界面、自动快照、备份和恢复等功能,支持动态扩展,并且可以与 Kubernetes 的存储类(StorageClass)集成,满足大多数存储需求。
-
NFS:Network File System(NFS)是一个用于文件共享的协议,适合需要多节点共享文件的场景。NFS 在 Kubernetes 中常作为一个共享存储解决方案,适合那些需要跨多个 Pod 或节点共享数据的应用场景。
-
Helm 安装工具介绍
Helm 是 Kubernetes 的包管理工具,简化了应用程序的安装、升级、删除和管理。通过 Helm,我们可以轻松地安装、配置和管理 Kubernetes 中的存储组件。。
为什么选择 Helm:
-
简化管理:Helm 使 Kubernetes 应用的管理变得更加简便,通过定义模板和配置,自动化安装和部署。
-
易于扩展:使用 Helm Chart 可以方便地对应用进行版本控制和升级。
-
支持社区应用:Helm 的官方和社区仓库提供了大量经过验证的应用部署模板。
快捷安装:通过helm release[1]下载指定 OS 的二进制包,windows 设置 PATH 环境变量指向二进制程序目录,Linux 则将二进制程序放入 /usr/local/bin/helm 即可。(无法获取安装包的,可以到文末我的仓库中获取哦)。安装成功,通过以下命令检查:
root@master1:/opt# helm version
version.BuildInfo{Version:"v3.17.0-rc.1", GitCommit:"301108edc7ac2a8ba79e4ebf5701b0b6ce6a31e4", GitTreeState:"clean", GoVersion:"go1.23.4"}
TIPS: 可以安装在本地电脑,那么在部署 helm 应用时需要指定远端的 k8s 集群配置文件。如果直接安装在 k8s 集群 master 节点中,则只要配置了~/.kube/config 文件,则不需要指定配置文件。
安装 Longhorn
Longhorn 是一个开源的分布式块存储系统,可以为 Kubernetes 提供可靠的存储。
-
步骤 1:添加 Helm 仓库
首先,在 Helm 中添加 Longhorn 的 Helm 仓库:
helm repo add longhorn https://charts.longhorn.io helm repo update -
步骤 2:安装 Longhorn
Longhorn 的 Helm Chart 信息查看 ArtifactHub[2] 获取。
-
helm pull可以增加--version xxxx用于指定具体版本,不指定,则获取最新版本。
-
longhorn本次安装的 Chart 的实例名称(Release Name)。 -
./longhorn本次安装的 Chart 文件目录。 -
--namespace指定目标命名空间。 -
--create-namespace标识当命名空间不存在时,自动创建命名空间。 -
-f longhorn-values.yaml用于指定具体的参数值,详细内容可参考文末的本人Git 仓库。 -
--kubeconfig=C:\Users\brains\Downloads\admin.conf用于指定目标k8s 集群的配置文件,若直接在集群中执行 helm 命令则可以不增加此参数。
-
longhorn本次安装的 Chart 的实例名称(Release Name)。 -
longhorn/longhorn本次安装的 Chart。 -
--namespace指定目标命名空间。 -
--create-namespace标识当命名空间不存在时,自动创建命名空间。 -
-f longhorn-values.yaml用于指定具体的参数值,详细内容可参考文末的本人Git 仓库。 -
--kubeconfig=k8s.conf用于指定目标k8s 集群的配置文件,若直接在集群中执行 helm 命令则可以不增加此参数。
-
安装 NFSv4客户端 在 Longhorn 系统中, 备份功能需要 NFSv4, v4.1 或是 v4.2, 同时, ReadWriteMany (RWX) 卷功能需要 NFSv4.1。因此,需要在所有节点提前安装 NFSv4 客户端。
apt-get install nfs-common -
安装 open-iscsi 必要组件,Longhorn 依赖主机上的 iscsiadm 向 Kubernetes 提供持久卷。
apt-get install open-iscsi systemctl enable iscsid systemctl start iscsid -
方式一:使用 Helm 安装远程 Charts :
注: 适用于快速部署,少量配置调整的场景。
helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace -f longhorn-values.yaml --kubeconfig=k8s.conf -
方式二:使用 Helm 安装本地 Charts
注: 适用于精细部署,个性化配置,甚至调整部署的 manifest。
下载并解压 Chart 包
helm pull longhorn/longhorn tar zxf longhorn-1.7.2.tgz拷贝默认的
Values文件:cd longhorn cp values.yaml longhorn-values.yamlvi 修改
longhorn-values.yaml,主要修改内容:# 镜像调整为我的阿里云仓库,否则没有梯子拉不下来 image: longhorn: engine: # -- Repository for the Longhorn Engine image. repository:registry.cn-shanghai.aliyuncs.com/yydd/longhornio # -- Tag for the Longhorn Engine image. tag:longhorn-engine-v1.7.2 manager: # -- Repository for the Longhorn Manager image. repository:registry.cn-shanghai.aliyuncs.com/yydd/longhornio # -- Tag for the Longhorn Manager image. tag:longhorn-manager-v1.7.2 ui: # -- Repository for the Longhorn UI image. repository:registry.cn-shanghai.aliyuncs.com/yydd/longhornio # -- Tag for the Longhorn UI image. tag:longhorn-ui-v1.7.2 instanceManager: # -- Repository for the Longhorn Instance Manager image. repository:registry.cn-shanghai.aliyuncs.com/yydd/longhornio # -- Tag for the Longhorn Instance Manager image. tag:longhorn-instance-manager-v1.7.2 shareManager: # -- Repository for the Longhorn Share Manager image. repository:registry.cn-shanghai.aliyuncs.com/yydd/longhornio # -- Tag for the Longhorn Share Manager image. tag:longhorn-share-manager-v1.7.2 backingImageManager: # -- Repository for the Backing Image Manager image. When unspecified, Longhorn uses the default value. repository:registry.cn-shanghai.aliyuncs.com/yydd/longhornio # -- Tag for the Backing Image Manager image. When unspecified, Longhorn uses the default value. tag:backing-image-manager-v1.7.2 supportBundleKit: # -- Repository for the Longhorn Support Bundle Manager image. repository:registry.cn-shanghai.aliyuncs.com/yydd/longhornio # -- Tag for the Longhorn Support Bundle Manager image. tag:support-bundle-kit-v0.0.45 csi: attacher: # -- Repository for the CSI attacher image. When unspecified, Longhorn uses the default value. repository:registry.cn-shanghai.aliyuncs.com/yydd/longhornio # -- Tag for the CSI attacher image. When unspecified, Longhorn uses the default value. tag:csi-attacher-v4.7.0 provisioner: # -- Repository for the CSI Provisioner image. When unspecified, Longhorn uses the default value. repository:registry.cn-shanghai.aliyuncs.com/yydd/longhornio # -- Tag for the CSI Provisioner image. When unspecified, Longhorn uses the default value. tag:csi-provisioner-v4.0.1-20241007 nodeDriverRegistrar: # -- Repository for the CSI Node Driver Registrar image. When unspecified, Longhorn uses the default value. repository:registry.cn-shanghai.aliyuncs.com/yydd/longhornio # -- Tag for the CSI Node Driver Registrar image. When unspecified, Longhorn uses the default value. tag:csi-node-driver-registrar-v2.12.0 resizer: # -- Repository for the CSI Resizer image. When unspecified, Longhorn uses the default value. repository:registry.cn-shanghai.aliyuncs.com/yydd/longhornio # -- Tag for the CSI Resizer image. When unspecified, Longhorn uses the default value. tag:csi-resizer-v1.12.0 snapshotter: # -- Repository for the CSI Snapshotter image. When unspecified, Longhorn uses the default value. repository:registry.cn-shanghai.aliyuncs.com/yydd/longhornio # -- Tag for the CSI Snapshotter image. When unspecified, Longhorn uses the default value. tag:csi-snapshotter-v7.0.2-20241007 livenessProbe: # -- Repository for the CSI liveness probe image. When unspecified, Longhorn uses the default value. repository:registry.cn-shanghai.aliyuncs.com/yydd/longhornio # -- Tag for the CSI liveness probe image. When unspecified, Longhorn uses the default value. tag:livenessprobe-v2.14.0 # 默认配置调整 defaultSettings: # 设置允许 Longhorn 仅在标签为“node.longhorn.io/create-default-disk=true”的节点上自动创建默认磁盘(如果不存在其他磁盘)。禁用此设置时,Longhorn 在添加到集群的每个节点上创建一个默认磁盘。 createDefaultDiskLabeledNodes:~ # 主机上存储数据的默认路径。默认值为“/var/lib/longhorn/”。 defaultDataPath:/data/storage/longhorn # 先设置ui 访问通过 NodePort 方式,后续等部署到 ingress 的文章中,再调整为 ingress 访问。 service: ui: # 设置 ui service 为 NodePort type:NodePort # 指定端口,可用端口范围 30000 and 32767. (不指定的话会默认创建一个) NodePort:30080执行安装:
cd .. PS D:\workspace\github\LeDaDa-CloudNative-Camp\k8s-ha-cluster-practice\ch3\helm-charts> helm install longhorn ./longhorn --namespace longhorn-system --create-namespace -f longhorn/longhorn-values.yaml --kubeconfig=C:\Users\brains\Downloads\admin.conf NAME: longhorn LAST DEPLOYED: Wed Jan 15 15:29:30 2025 NAMESPACE: longhorn-system STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Longhorn is now installed on the cluster! Please wait a few minutes for other Longhorn components such as CSI deployments, Engine Images, and Instance Managers to be initialized. Visit our documentation at https://longhorn.io/docs/ -
Watch Pod 达到 Running 状态,代表部署成功:
watch kubectl get pod -n longhorn-system -o wide Every 2.0s: kubectl get pod -n longhorn-system -o wide master1: Wed Jan 15 09:49:29 2025 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATE S csi-attacher-94b689496-58wrs 1/1 Running 0 10m 10.244.166.172 node1 <none> <none> csi-attacher-94b689496-dgjj7 1/1 Running 0 10m 10.244.166.165 node1 <none> <none> csi-attacher-94b689496-kkzp7 1/1 Running 0 10m 10.244.166.163 node1 <none> <none> csi-provisioner-86f577fddd-9lt6r 1/1 Running 0 10m 10.244.166.173 node1 <none> <none> csi-provisioner-86f577fddd-n5gsq 1/1 Running 0 10m 10.244.166.169 node1 <none> <none> csi-provisioner-86f577fddd-xh4qh 1/1 Running 0 10m 10.244.166.164 node1 <none> <none> csi-resizer-7589b8b586-65k5c 1/1 Running 0 10m 10.244.166.166 node1 <none> <none> csi-resizer-7589b8b586-hh9bp 1/1 Running 0 10m 10.244.166.175 node1 <none> <none> csi-resizer-7589b8b586-qq4mt 1/1 Running 0 10m 10.244.166.168 node1 <none> <none> csi-snapshotter-db9dcd54f-brn58 1/1 Running 0 10m 10.244.166.171 node1 <none> <none> csi-snapshotter-db9dcd54f-nt588 1/1 Running 0 10m 10.244.166.167 node1 <none> <none> csi-snapshotter-db9dcd54f-zh44r 1/1 Running 0 10m 10.244.166.174 node1 <none> <none> engine-image-ei-bc6697f9-fc9j8 1/1 Running 0 10m 10.244.166.160 node1 <none> <none> instance-manager-81f3df2191f0e4a5a0b7c5f126c1a995 1/1 Running 0 10m 10.244.166.161 node1 <none> <none> longhorn-csi-plugin-79dfm 3/3 Running 0 10m 10.244.166.170 node1 <none> <none> longhorn-driver-deployer-566cf4b476-pcq8g 1/1 Running 0 11m 10.244.166.159 node1 <none> <none> longhorn-manager-hp5bf 2/2 Running 1 (10m ago) 11m 10.244.166.158 node1 <none> <none> longhorn-ui-8495965bd5-bh6pg 1/1 Running 0 11m 10.244.166.157 node1 <none> <none> longhorn-ui-8495965bd5-lsjkz 1/1 Running 0 11m 10.244.166.156 node1 <none> <none>
-
-
步骤 3:验证功能
-
依据部署时的参数设定,添加标签至 node1 节点:
kubectl label node node1 node.longhorn.io/create-default-disk=true -
通过 VIP + NodePort 端口,我们的是
192.168.33.250:30080访问 UI:
-
我们可以通过开启 master 允许pod 调度,同时打上 longhorn 磁盘标签,查看具体的变化:
# master2 允许调度 kubectl taint node master2 node-role.kubernetes.io/control-plane:NoSchedule- # master2 打上 longhorn 创建磁盘 标签 kubectl label node master2 node.longhorn.io/create-default-disk=true # master3 允许调度 kubectl taint node master3 node-role.kubernetes.io/control-plane:NoSchedule- # master3 打上 longhorn 创建磁盘 标签 kubectl label node master3 node.longhorn.io/create-default-disk=true可以看到已经有 3个节点可供调度:

-
查看
StorageClass清单:root@master1:~# kubectl get storageclass NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE longhorn (default) driver.longhorn.io Delete Immediate true 34m longhorn-static driver.longhorn.io Delete Immediate true 34m可以看到一共创建了两个 StorageClass,其中
longhorn是默认StorageClass,用来动态提供创建 longhorn存储,而longhorn-static是用于预先配置 PVC(静态配置)的假储存类别。 -
创建
test-longhorn.yaml,用于部署一个 Pod,并且创建 动态PVC 挂载(longhorn):# pvc apiVersion:v1 kind:PersistentVolumeClaim metadata: name:longhorn-pvc namespace:default spec: accessModes: -ReadWriteOnce # 指定上面查到的动态 sc storageClassName:longhorn resources: requests: storage:1Gi --- apiVersion:v1 kind:Pod metadata: name:longhorn-pod namespace: spec: containers: -name:busybox-container image:registry.cn-shanghai.aliyuncs.com/yydd/busybox:1.28 # 持续往 /data/log.txt 输入日志 command:["/bin/sh","-c","while true; do echo $(date) >> /data/log.txt; sleep 5; done"] volumeMounts: # /data 目录 mount 存储 storage -mountPath:"/data" name:storage volumes: -name:storage persistentVolumeClaim: # pvc 信息 claimName:longhorn-pvc -
部署
test-longhorn.yaml:root@master1:~/yy# kubectl apply -f test-longhorn.yaml persistentvolumeclaim/longhorn-pvc created pod/longhorn-pod created root@master1:~/yy# -
进入容器查看 /data/log.txt 是否持续在产生内容:
root@master1:~/yy# kubectl exec -it longhorn-pod -- tail -f /data/log.txt Wed Jan 15 10:25:48 UTC 2025 Wed Jan 15 10:25:53 UTC 2025 Wed Jan 15 10:25:58 UTC 2025 Wed Jan 15 10:26:03 UTC 2025 Wed Jan 15 10:26:08 UTC 2025 Wed Jan 15 10:26:13 UTC 2025 Wed Jan 15 10:26:18 UTC 2025 Wed Jan 15 10:26:23 UTC 2025 Wed Jan 15 10:26:28 UTC 2025 Wed Jan 15 10:26:33 UTC 2025 Wed Jan 15 10:26:38 UTC 2025可以看到 Dashboard 中有一个 Volume ,同时 也有多副本信息:

-
安装 NFS Client Provisioner
NFS Client Provisioner 是一个 Kubernetes 存储类实现,它利用 NFS(Network File System) 来动态创建持久卷。 它的 Helm Chart 信息查看Github[3] 获取。
-
步骤 1:部署 NFS 服务端
首先,需要准备一个 NFS 服务器来提供存储服务。我们就使用我们 k8s 的 master1 节点。
- 安装并配置 NFS 服务器(master1):
# 在 Ubuntu 上安装 NFS 服务器 $ sudo apt update $ sudo apt install nfs-kernel-server # 创建共享目录 $ sudo mkdir -p /data/nfsdata # 由于我们希望所有客户端都可以访问所有文件,因此我们将分配目录权限。 $ sudo chmod -R 777 /data/nfsdata # 配置 NFS 导出,在文件中添加以下行 $ cat >> /etc/exports << EOF /data/nfsdata *(rw,sync,no_subtree_check) EOF # 重新加载 NFS 配置 $ sudo exportfs -a # 启动 NFS 服务 $ sudo systemctl start nfs-kernel-server $ sudo systemctl enable nfs-kernel-server - 验证 NFS 服务正常运行:
root@master1:~/yy# sudo systemctl start nfs-kernel-server sudo systemctl enable nfs-kernel-server Synchronizing state of nfs-kernel-server.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable nfs-kernel-server root@master1:~/yy# systemctl status nfs-kernel-server ● nfs-server.service - NFS server and services Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled) Drop-In: /run/systemd/generator/nfs-server.service.d └─order-with-mounts.conf Active: active (exited) since Thu 2025-01-16 09:58:18 UTC; 1min 34s ago Main PID: 388706 (code=exited, status=0/SUCCESS) CPU: 6ms Jan 16 09:58:18 master1 systemd[1]: Starting NFS server and services... Jan 16 09:58:18 master1 exportfs[388705]: exportfs: can't open /etc/exports for reading Jan 16 09:58:18 master1 systemd[1]: Finished NFS server and services. root@master1:~/yy# showmount -e localhost Export list for localhost: /data/nfsdata *
- 安装并配置 NFS 服务器(master1):
-
步骤 2:部署 NFS Client Provisioner
-
nfs-subdir-external-provisioner本次安装的 Chart 的实例名称(Release Name)。 -
./nfs-subdir-external-provisioner本次安装的 Chart 文件目录。 -
--namespace指定目标命名空间。 -
--create-namespace标识当命名空间不存在时,自动创建命名空间。 -
--set nfs.server=192.168.33.11 --set nfs.path=/data/nfsdata用于指定上面实际部署的 NFS 服务端信息。 -
--set image.repository=registry.cn-shanghai.aliyuncs.com/yydd/nfs-subdir-external-provisoner设置镜像仓库为我的阿里云仓库,加速拉取。 -
--kubeconfig=C:\Users\brains\Downloads\admin.conf用于指定目标k8s 集群的配置文件,若直接在集群中执行 helm 命令则可以不增加此参数。
-
helm 添加 仓库:
$ helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/ $ helm repo update注:访问不了的可以跳过,通过文末的 git 仓库获取 chart 附件。
-
安装 Charts:
后续所有组件我都基于本地下载 charts 方式进行,方便管理及共享。
$ helm pull nfs-subdir-external-provisioner/nfs-subdir-external-provisioner $ tar zxf nfs-subdir-external-provisioner-4.0.18.tgz $ PS D:\workspace\github\LeDaDa-CloudNative-Camp\k8s-ha-cluster-practice\ch3\helm-charts> helm install nfs-subdir-external-provisioner ./nfs-subdir-external-provisioner --namespace nfs-client-provisioner --create-namespace --set nfs.server=192.168.33.11 --set nfs.path=/data/nfsdata --set image.repository=al-provisioner --namespace nfs-client-provisioner --create-namespace --set nfs.server=192.168.33.11 --set nfs.path=/data/nfsdata --set image.repository=registry.cn-shanghai.aliyuncs.com/yydd/nfs-subdir-external-provisoner --kubeconfig=C:\Users\brains\Downloads\admin.conf NAME: nfs-subdir-external-provisioner LAST DEPLOYED: Thu Jan 16 18:31:20 2025 NAMESPACE: nfs-client-provisioner STATUS: deployed REVISION: 1 TEST SUITE: None -
Watch Pod 达到 Running 状态,代表部署成功:
root@master1:~# watch kubectl get pod -n nfs-client-provisioner -o wide Every 2.0s: kubectl get pod -n nfs-client-provisioner -o wide master1: Thu Jan 16 10:33:27 2025 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nfs-subdir-external-provisioner-6fddd668f4-wwmhk 1/1 Running 0 2m6s 10.244.180.14 master2 <none> <none>
-
-
步骤 3:验证功能
- 查看
StorageClass清单:
可以看到创建了一个 StorageClassroot@master1:~# kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE longhorn (default) driver.longhorn.io Delete Immediate true 44h longhorn-static driver.longhorn.io Delete Immediate true 44h nfs-client cluster.local/nfs-subdir-external-provisioner Delete Immediate true 19h 34mnfs-client。 - 创建
test-nfs.yaml,用于部署一个 Pod,并且创建 动态PVC 挂载(nfs-client):# pvc apiVersion:v1 kind:PersistentVolumeClaim metadata: name:nfs-pvc namespace:default spec: accessModes: -ReadWriteOnce # 指定上面查到的动态 sc storageClassName:nfs-client resources: requests: storage:1Gi --- apiVersion:v1 kind:Pod metadata: name:nfs-pod namespace: spec: containers: -name:busybox-container image:registry.cn-shanghai.aliyuncs.com/yydd/busybox:1.28 # 持续往 /data/log.txt 输入日志 command:["/bin/sh","-c","while true; do echo $(date) >> /data/log.txt; sleep 5; done"] volumeMounts: # /data 目录 mount 存储 storage -mountPath:"/data" name:storage volumes: -name:storage persistentVolumeClaim: # pvc 信息 claimName:nfs-pvc - 部署
test-nfs.yaml:root@master1:~/yy# kubectl apply -f test-nfs.yaml persistentvolumeclaim/nfs-pvc created pod/nfs-pod created - 进入容器查看 /data/log.txt 是否持续在产生内容:
可以看到在 nfs 服务器 /data/nfsdata 目录下已经存在相关文件:root@master1:~/yy# kubectl exec -it nfs-pod -- tail -f /data/log.txt Fri Jan 17 06:19:55 UTC 2025 Fri Jan 17 06:20:00 UTC 2025 Fri Jan 17 06:20:05 UTC 2025 Fri Jan 17 06:20:10 UTC 2025root@master1:/data/nfsdata# ll total 12 drwxrwxrwx 3 root root 4096 Jan 17 06:19 ./ drwx--x--x 5 root root 4096 Jan 16 09:58 ../ drwxrwxrwx 2 nobody nogroup 4096 Jan 17 06:19 default-nfs-pvc-pvc-3e80d8a7-e768-4bbc-8cfb-6da13b9ddcfe/ root@master1:/data/nfsdata/default-nfs-pvc-pvc-3e80d8a7-e768-4bbc-8cfb-6da13b9ddcfe# ll total 12 drwxrwxrwx 2 nobody nogroup 4096 Jan 17 06:19 ./ drwxrwxrwx 3 root root 4096 Jan 17 06:19 ../ -rw-r--r-- 1 nobody nogroup 667 Jan 17 06:21 log.txt
- 查看
helm 扩展命令
# 列出已添加的 helm 仓库清单
helm repo list
# 列出某个 helm 仓库下的 charts
helm search repo [repo name]
如果你在部署过程中遇到问题,可以参考文末提供的 github[4] / gitee[5] 仓库中的相关资源。
总结
通过本文的实践,读者可以快速在Kubernetes集群中部署Longhorn和NFS存储组件,为云原生应用提供可靠的存储支持。使用Helm简化了安装和管理过程,使用户能够专注于应用的开发和部署。每个存储组件都有其特定的作用和适用场景,选择合适的存储解决方案可以有效提升应用的性能和可靠性。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)