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://www.pswp.cn/web/97957.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/97957.shtml
英文地址,請注明出處:http://en.pswp.cn/web/97957.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MATLAB繪制一個新穎的混沌圖像(新四翼混沌系統)

新四翼混沌系統:dx/dt a(y - x) yz dy/dt cx - y - xz dz/dt -bz xyMATLAB代碼:function plot_novel_chaotic_system() % 參數設置 a 10; b 8/3; c 28;% 初始條件 x0 [1, 1, 1];% 時間范圍 tspan [0 100];% 求解微分方程 [t, x] ode45((t, x) chaotic_system(t, x, …

金融數據---獲取股票日線數據

獲取股票日線的數據方式有很多,包括東方財富,同花順,tushare,這里我們就利用東方財富的數據,是免費的開源獲取,第一步先安裝akshare,pip安裝就可以py -m pip install akshareAkshare 股票數據獲…

Mac 真正多顯示器支持:TESmart USB-C KVM(搭載 DisplayLink 技術)如何實現

多顯示器已經不再是奢侈品,而是專業人士提升生產力的必需工具。無論是創意設計師、股票交易員還是軟件開發人員,多屏幕都能讓工作流程更高效、更有條理。 然而,Mac 用戶長期以來面臨一個主要障礙:macOS 原生不支持多流傳輸&#x…

【實時Linux實戰系列】靜態鏈接與libc選擇:musl vs glibc的時延權衡

背景與重要性 在實時系統開發中,選擇合適的C標準庫(libc)和鏈接方式對系統的啟動時間、線程性能和內存分配效率有著顯著影響。glibc和musl是兩種流行的C標準庫實現,它們在設計目標和性能表現上存在差異。通過對比這兩種libc在啟動…

Altium Designer(AD24)的三種文件組織形式,工程文件,自由文件與存盤文件

??《專欄目錄》 目錄 1,概述 2,工程文件 3,自由文件 4,存盤文件 5,文件轉換 5.1,工程文件于自由文件互轉換 5.2,工程文件于存盤文件互轉換 6,注意事項 1,概述 本文介紹Altium Designer 24軟件(后文簡稱AD24或軟件)的三種文件組織形式,工程文件,自由文件和存盤文…

Python+Selenium實現自動化測試

🍅 點擊文末小卡片 ,免費獲取軟件測試全套資料,資料在手,漲薪更快安裝selenium打開命令控制符輸入:pip install -U selenium火狐瀏覽器安裝firebug:www.firebug.com,調試所有網站語言&#xff0…

2024年CSP-X初賽真題及答案解析(6-10)

2024年CSP-X初賽真題及答案解析(6-10) 字符串abcabcabc有多少不同的非空子串?( )。 A. 24 B. 36 C. 45 D. 46 答案:A 解析: 長度 1: 3 個(a, b, c) 長度 2: 3 個(ab, bc, ca) 長度 3: 3 個(abc, bca, cab) 長度 4: 3 個(abca, bcab, cabc) 長度 5: 3 個(a…

緩存與數據庫一致性的4大坑及終極解決方案

緩存雪崩、擊穿、穿透全中招?別讓緩存與數據庫的“愛恨情仇”毀了你的系統! 你有沒有經歷過這樣的深夜告警:Redis 響應延遲飆升,數據庫 CPU 直沖 100%,接口大面積超時?一查日志,發現大量請求繞過…

基于 Python charm 庫實現的一些 Pairing 密碼學算法

基于 Python charm 庫實現了一些 Pairing 密碼學算法,放在了 https://github.com/BatchClayderman/Cryptography-Schemes 里面。 在正確部署了 Python charm 庫后,所有的 Python 腳本都是獨立的,即該存儲庫中不存在一個腳本調用另一個腳本的…

用戶體驗五大要點:從問題到解決方案的完整指南

在互聯網產品設計和運營的過程中,用戶體驗(User Experience,簡稱 UX) 已經成為決定產品成敗的關鍵因素。一個功能再強大的產品,如果用戶用得不舒服、不信任,甚至覺得沒有價值,最終都會被拋棄。那…

MySQL 外鍵約束:表與表之間的 “契約”,數據一致性的守護者

MySQL 外鍵約束:表與表之間的 “契約”,數據一致性的守護者 在 MySQL 數據庫設計中,外鍵約束(FOREIGN KEY)是維護表之間關聯關系的核心工具。它就像表與表之間的一份 “契約”,確保從表(如訂單…

《投資-54》元宇宙

元宇宙(Metaverse)是一個近年來備受關注的概念,它描繪了一個虛擬與現實交融、由多個互連的3D虛擬世界組成的沉浸式數字環境。用戶可以通過虛擬現實(VR)、增強現實(AR)、互聯網和其他技術&#x…

【數據結構】Java集合框架:List與ArrayList

文章目錄一、認識List接口1.1 List的定義與繼承關系1.2 Collection接口的核心方法1.3 List接口的獨特方法二、線性表與順序表基礎2.1 線性表2.2 順序表自定義順序表(MyArrayList)實現1. 前期準備:自定義異常類2. MyArrayList核心結構3. 工具方…

K8S里的“豌豆莢”:Pod

1. 為什么要有podPod 這個詞原意是“豌豆莢”,后來又延伸出“艙室”“太空艙”等含義,你可以看一下這張圖片,形 象地來說 Pod 就是包含了很多組件、成員的一種結構。之前的容器技術讓進程在一個“沙盒”環境里運行,具有良好的隔離…

vue3 基本教程-運行一個最小demo

Vue 3 基本教程 - 運行一個最小 Demo 1. 創建項目 使用 Vue 官方腳手架工具創建一個新項目: # 安裝 Vue CLI (如果尚未安裝) npm install -g vue/cli# 創建一個新項目 vue create vue3-demo# 選擇 Vue 3 預設 # 使用方向鍵選擇 "Default (Vue 3)" 然后按 …

大數據新視界 -- Hive 集群搭建與配置的最佳實踐(2 - 16 - 13)

??????親愛的朋友們,熱烈歡迎你們來到 青云交的博客!能與你們在此邂逅,我滿心歡喜,深感無比榮幸。在這個瞬息萬變的時代,我們每個人都在苦苦追尋一處能讓心靈安然棲息的港灣。而 我的博客,正是這樣一個溫暖美好的所在。在這里,你們不僅能夠收獲既富有趣味又極為實…

C/C++ 轉 Java 的數據結構初階對比指南

一、先遣了解和回顧1、預覽快速對比表格數據結構????C/C 實現????Java 實現????關鍵區別????數組??int arr[5];int[] arr new int[5];語法類似&#xff0c;Java 數組是對象??動態數組??vector<int> v;ArrayList<Integer> list new ArrayLi…

長連接和短連接

在網絡通信中&#xff0c;長連接&#xff08;Long Connection&#xff09;和短連接&#xff08;Short Connection&#xff09;是兩種核心的連接管理策略&#xff0c;其區別主要體現在連接生命周期、資源占用和適用場景上。以下是兩者的詳細解析&#xff1a;一、核心概念對比特性…

Java:使用spring-cloud-gateway的應用報DnsNameResolverTimeoutException原因和解決方法

使用spring-cloud-gateway時&#xff0c;有時會報DnsNameResolverTimeoutException異常。堆棧信息類似&#xff1a;Caused by: java.net.UnknownHostException: Failed to resolve cloudconnector.linkup-sage.comat io.netty.resolver.dns.DnsResolveContext.finishResolve(Dn…

SpringCloud概述

目錄 一、概念 1.1 微服務架構 1.2 SpringCloud概念 1.3 核心價值 1.4 能力邊界 1.5 微服務總體架構圖 二、生態圈 2.1 不同生態圈組件對比 2.2 組件介紹 2.2.1 服務發現與注冊 2.2.2 配置管理 2.2.3 API網關 2.2.4 容錯與熔斷 2.2.5 客戶端負載均衡 2.2.6 服務…