当前位置: 首页 > news >正文

SeaweedFS深度解析(九):k8s环境使用helm部署Seaweedfs集群

上一篇:《SeaweedFS深度解析(八):k8s环境使用Operator部署Seaweedfs集群》

链接: link

#作者:闫乾苓

文章目录

  • k8s环境使用helm部署Seaweedfs集群
    • 准备镜像
      • seaweed-master-localpv-storageclass.yaml
      • seaweed-volume-localpv-storageclass.yaml
      • seaweed-filer-localpv-storageclass.yaml
    • 创建3个组件的storageclass
      • master PV的yaml文件master-pv.yaml
      • volume PV的yaml文件 volume-pv.yaml
      • filer PV的yaml文件 filer-pv.yaml
    • 查看创建的pv
      • 如果提示有以下错误:
      • 如果需要删除,可以使用下面的命令:

k8s环境使用helm部署Seaweedfs集群

~# helm repo add seaweedfs https://seaweedfs.github.io/seaweedfs/helm~# helm search repo seaweedfs --versions
NAME                    CHART VERSION   APP VERSION     DESCRIPTION
seaweedfs/seaweedfs     4.0.392         3.92            SeaweedFS  
seaweedfs/seaweedfs     4.0.391         3.91            SeaweedFS  
seaweedfs/seaweedfs     4.0.390         3.90            SeaweedFS

准备镜像

~# docker pull chrislusf/seaweedfs:3.92
~# docker tag chrislusf/seaweedfs:3.92 192.168.61.3/seaweedfs/seaweedfs:3.92
~# docker push 192.168.61.3/seaweedfs/seaweedfs:3.92

SeaweedFS Helm Chart 的默认参数值完整导出到本地

~# helm show values seaweedfs/seaweedfs --version 4.0.392 > seaweedfs-values-4.0.392.yaml

为了master、volume、filer组件的数据持久化,简单起见使用local-pv方案,为避免各组件间pv绑定错乱,这里使用为不同组件使用不同storageclass名称。

seaweed-master-localpv-storageclass.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: seaweed-master-localpv-storageclass
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

seaweed-volume-localpv-storageclass.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: seaweed-volume-localpv-storageclass
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

seaweed-filer-localpv-storageclass.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: seaweed-filer-localpv-storageclass
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

创建3个组件的storageclass

[root@master storageclass]# kubectl apply -f seaweed-master-localpv-storageclass.yaml -f seaweed-volume-localpv-storageclass.yaml -f seaweed-filer-localpv-storageclass.yaml
[root@master storageclass]# kubectl get sc
NAME                                  PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
seaweed-filer-localpv-storageclass    kubernetes.io/no-provisioner   Delete          WaitForFirstConsumer   false                  10d
seaweed-master-localpv-storageclass   kubernetes.io/no-provisioner   Delete          WaitForFirstConsumer   false                  10d
seaweed-volume-localpv-storageclass   kubernetes.io/no-provisioner   Delete          WaitForFirstConsumer   false                  10d

master PV的yaml文件master-pv.yaml

---
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-master-data-0labels:app: seaweedfs-masterrole: data
spec:capacity:storage: 2GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: seaweed-master-localpv-storageclasslocal:path: /data/seaweedfs/master/data-0nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node1
---
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-master-logs-0labels:app: seaweedfs-masterrole: logs
spec:capacity:storage: 1GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: seaweed-master-localpv-storageclasslocal:path: /data/seaweedfs/master/logs-0nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node1
---
# master 副本1
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-master-data-1labels:app: seaweedfs-masterrole: data
spec:capacity:storage: 2GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: seaweed-master-localpv-storageclasslocal:path: /data/seaweedfs/master/data-1nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node2
---
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-master-logs-1labels:app: seaweedfs-masterrole: logs
spec:capacity:storage: 1GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: seaweed-master-localpv-storageclasslocal:path: /data/seaweedfs/master/logs-1nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node2
---
# master 副本2
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-master-data-2labels:app: seaweedfs-masterrole: data
spec:capacity:storage: 2GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: seaweed-master-localpv-storageclasslocal:path: /data/seaweedfs/master/data-2nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node3
---
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-master-logs-2labels:app: seaweedfs-masterrole: logs
spec:capacity:storage: 1GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: seaweed-master-localpv-storageclasslocal:path: /data/seaweedfs/master/logs-2nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node3

volume PV的yaml文件 volume-pv.yaml

---
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-volume-data-0labels:app: seaweedfs-volumerole: data
spec:capacity:storage: 20GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: seaweed-volume-localpv-storageclasslocal:path: /data/seaweedfs/volume/data-0nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node1
---
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-volume-logs-0labels:app: seaweedfs-volumerole: logs
spec:capacity:storage: 1GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: seaweed-volume-localpv-storageclasslocal:path: /data/seaweedfs/volume/logs-0nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node1
---
# volume 副本1
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-volume-data-1labels:app: seaweedfs-volumerole: data
spec:capacity:storage: 20GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: seaweed-volume-localpv-storageclasslocal:path: /data/seaweedfs/volume/data-1nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node2
---
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-volume-logs-1labels:app: seaweedfs-volumerole: logs
spec:capacity:storage: 1GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: seaweed-volume-localpv-storageclasslocal:path: /data/seaweedfs/volume/logs-1nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node2
---
# volume 副本2
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-volume-data-2labels:app: seaweedfs-volumerole: data
spec:capacity:storage: 20GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: seaweed-volume-localpv-storageclasslocal:path: /data/seaweedfs/volume/data-2nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node3
---
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-volume-logs-2labels:app: seaweedfs-volumerole: logs
spec:capacity:storage: 1GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: seaweed-volume-localpv-storageclasslocal:path: /data/seaweedfs/volume/logs-2nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node3

filer PV的yaml文件 filer-pv.yaml

---
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-filer-data-0labels:app: seaweedfs-filerrole: data
spec:capacity:storage: 2GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: seaweed-filer-localpv-storageclasslocal:path: /data/seaweedfs/filer/data-0nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node1
---
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-filer-logs-0labels:app: seaweedfs-filerrole: logs
spec:capacity:storage: 1GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: seaweed-filer-localpv-storageclasslocal:path: /data/seaweedfs/filer/logs-0nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node1
---
# filer 副本1
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-filer-data-1labels:app: seaweedfs-filerrole: data
spec:capacity:storage: 2GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: seaweed-filer-localpv-storageclasslocal:path: /data/seaweedfs/filer/data-1nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node2
---
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-filer-logs-1labels:app: seaweedfs-filerrole: logs
spec:capacity:storage: 1GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: seaweed-filer-localpv-storageclasslocal:path: /data/seaweedfs/filer/logs-1nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node2

因为local-pv的storageclass不支持根据pvc动态创建pv,因此手动创建3个组件的pv
[root@master pv]# kubectl apply -f master-pv.yaml -f volume-pv.yaml -f filer-pv.yaml

查看创建的pv

在这里插入图片描述

~# helm install seaweedfs seaweedfs/seaweedfs --version 4.0.392 -f seaweedfs-values.yaml

如果提示有以下错误:

Error: INSTALLATION FAILED: Get "https://seaweedfs.github.io/seaweedfs/helm/seaweedfs-4.0.392.tgz": read tcp 192.168.61.20:60156->185.199.108.153:443: read: connection reset by peer

可以现手动下载Helm Chart包

[root@master ~]# wget https://seaweedfs.github.io/seaweedfs/helm/seaweedfs-4.0.392.tgz

在使用已经下载的包进行安装

[root@master helm_deploy_cluster]# helm install seaweedfs ./seaweedfs-4.0.392.tgz -f seaweedfs-values.yaml
NAME: seaweedfs
LAST DEPLOYED: Tue Jul 15 11:24:18 2025
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

如果修改了values.yaml,可以更新部署

helm upgrade seaweedfs ./seaweedfs-4.0.392.tgz -f seaweedfs-values.yaml

如果需要删除,可以使用下面的命令:

[root@master helm_deploy_cluster]# helm ls --all
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
seaweedfs       default         4               2025-07-15 14:24:45.450034677 +0800 CST deployed        seaweedfs-4.0.392       3.92       
[root@master helm_deploy_cluster]# helm uninstall seaweedfs
release "seaweedfs" uninstalled[root@master helm_deploy_cluster]# kubectl get pod
NAME                 READY   STATUS             RESTARTS      AGE
seaweedfs-filer-0    0/1     CrashLoopBackOff   3 (9s ago)    6m41s
seaweedfs-filer-1    0/1     CrashLoopBackOff   3 (10s ago)   6m41s
seaweedfs-master-0   0/1     CrashLoopBackOff   3 (13s ago)   6m41s
seaweedfs-master-1   0/1     CrashLoopBackOff   3 (7s ago)    6m41s
seaweedfs-master-2   0/1     CrashLoopBackOff   3 (8s ago)    6m41s
seaweedfs-volume-0   0/1     Running            0             6m41s
seaweedfs-volume-1   0/1     Running            0             6m41s
seaweedfs-volume-2   0/1     Running            0             6m41s
[root@master helm_deploy_cluster]# kubectl logs pods/seaweedfs-master-0 
I0704 08:13:39.030513 config.go:53 Reading : Config File "security" Not Found in "[/data /.seaweedfs /usr/local/etc/seaweedfs /etc/seaweedfs]"
flag provided but not defined: -raftElectionTimeout
Example: weed master -port=9333
Default Usage:-cpuprofile stringcpu profile output file-defaultReplication stringDefault replication type if not specified.-disableHttpdisable http requests, only gRPC operations are allowed.-electionTimeout durationelection timeout of master servers (default 10s)

文章转载自:

http://yOCu8NJP.zknjy.cn
http://bBJZYpNk.zknjy.cn
http://II1mipxx.zknjy.cn
http://aUNwhRrJ.zknjy.cn
http://tnJtAVfw.zknjy.cn
http://GKOieYJ0.zknjy.cn
http://6aMqtB7F.zknjy.cn
http://LL95Px3V.zknjy.cn
http://nDJaEklE.zknjy.cn
http://a047swqI.zknjy.cn
http://yCiPc2ql.zknjy.cn
http://ue14dpy1.zknjy.cn
http://ySNxYTWi.zknjy.cn
http://VoqOya6I.zknjy.cn
http://iLRwmrIa.zknjy.cn
http://6M2tdHsY.zknjy.cn
http://G6P2TRDn.zknjy.cn
http://3Ggxjd7b.zknjy.cn
http://tBEXu5co.zknjy.cn
http://PVyUXvIm.zknjy.cn
http://Q2woscd7.zknjy.cn
http://K1Rwmp08.zknjy.cn
http://tI7HaD1x.zknjy.cn
http://XJPAOsck.zknjy.cn
http://FBkIwSzH.zknjy.cn
http://FJjXwwYB.zknjy.cn
http://aFaEMNbE.zknjy.cn
http://6oL47DyS.zknjy.cn
http://tjU25w41.zknjy.cn
http://uaqoYzXX.zknjy.cn
http://www.dtcms.com/a/385803.html

相关文章:

  • uniApp开发XR-Frame微信小程序创建3D场景 (8) 刚体碰撞
  • NPM 常用命令
  • Windows 11 安装使用 nvm,Node.js、npm多版本管理、切换
  • AI Compass前沿速览:GPT-5-Codex 、宇树科技世界模型、InfiniteTalk美团数字人、ROMA多智能体框架、混元3D 3.0
  • 苹果上架全流程指南 苹果应用上架步骤、iOS 应用发布流程、uni-app 打包上传 ipa 与 App Store 审核经验分享
  • 旗讯 OCR 识别系统深度解析:一站式解决表格、手写文字、证件识别难题!
  • strip()函数使用注意点
  • 好用的开源日志库:Easylogger解析与移植STM32
  • django入门-数据库基本操作
  • springboot的项目实现excel上传功能
  • 从 Docker 守护进程获取实时事件
  • TCP编程:socket概念及使用方法(基础教程)
  • Python 在运维与云原生领域的核心应用:从基础到实践
  • 项目实战:Rsync + Sersync 实现文件实时同步
  • 云原生是什么
  • Docker 镜像瘦身实战:从 1.2GB 压缩到 200MB 的优化过程
  • RabbitMQ消息中间件
  • 2019年下半年 系统架构设计师 案例分析
  • OpenAI编程模型重磅升级!GPT-5-Codex发布,动态思考机制实现编程效率倍增
  • 数据结构排序入门(2):核心排序(选择排序,快速排序及优化)
  • 达索系统 SIMULIA 大中华区用户大会启幕,迅筑科技分享设计仿真一体化落地方案
  • 未来已来:当清洁成为一场静默的科技交响
  • 从零开始手写机器学习框架:我的深度学习之旅
  • Qt QML Switch和SwitchDelegate的区别?
  • MATLAB 线弹性 + 裂纹扩展 1D2D3D 统一框架
  • 基于Qt的跨平台全局输入事件监控技术实现
  • 从0到1入门JVM
  • Tessent_ijtag_ug——第 5 章IJTAG 网络插入 (1)
  • leetcode238.除自身以外数组的乘积
  • 【数据工程】6. 数据库、数据仓库与数据湖 (Databases, Data Warehouses and Data Lakes)