k8s環境使用Operator部署Seaweedfs集群(上)

@作者:閆乾苓

文章目錄

  • 前言
    • 4.1 前置條件
    • 4.2 部署seaweedfs-operator
    • 4.3 準備operator鏡像
    • 4.4 使用operator部署Seaweedfs集群
      • 4.4.1 部署StorageClass
      • 4.4.2 使用StorageClass預先創建PV

前言

SeaweedFS Operator是一個Kubernetes Operator,用于自動化部署和管理SeaweedFS集群 README.md:6-8 。部署分為兩個階段:首先部署Operator本身,然后創建SeaweedFS集群資源。

4.1 前置條件

  1. 運行中的Kubernetes集群(v1.19+)
  2. 配置好的kubectl命令行工具
  3. 安裝Kustomize或Helm 3

Helm安裝步驟參考:

~# curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
~# helm version

4.2 部署seaweedfs-operator

克隆seaweedfs-operator倉庫

[root@master ~]# git clone https://githubfast.com/seaweedfs/seaweedfs-operator --depth=1
正克隆到 'seaweedfs-operator'...
remote: Enumerating objects: 136, done.
remote: Counting objects: 100% (136/136), done.
remote: Compressing objects: 100% (112/112), done.
remote: Total 136 (delta 20), reused 65 (delta 14), pack-reused 0 (from 0)
接收對象中: 100% (136/136), 126.64 KiB | 201.00 KiB/s, 完成.
處理 delta 中: 100% (20/20), 完成.
[root@master ~]# ll
[root@master seaweedfs-operator]# docker login -u admin 192.168.61.3
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded

4.3 準備operator鏡像

手動下載鏡像,并復制到k8s相關node節點,并導入。

docker pull registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20231011-8b53cabe0
docker pull chrislusf/seaweedfs-operator:1.0.2

helm部署seaweedfs-operator,如果因鏡像拉取失敗等原因導致helm報錯,如:

[root@master seaweedfs-operator]# helm install seaweedfs-operator ./deploy/helm
Error: INSTALLATION FAILED: failed post-install: 1 error occurred:* timed out waiting for the condition

待鏡像手動拉取并導入到k8s相關節點后,helm 使用—replace參數重新部署。

[root@master seaweedfs-operator]# helm install --replace seaweedfs-operator ./deploy/helm
NAME: seaweedfs-operator
LAST DEPLOYED: Thu Jul  3 13:59:22 2025
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None

seaweedfs-operator 運行狀態正常

[root@master ~]# kubectl get pods --all-namespaces -o wide
NAMESPACE     NAME                                     READY   STATUS    RESTARTS      AGE   IP               NODE     NOMINATED NODE   READINESS GATES
default       seaweedfs-operator-5c44d464cc-7bl8g      1/1     Running   0             11m   10.244.166.143   node1    <none>           <none>
kube-system   calico-kube-controllers-d569cccf-rfxkk   1/1     Running   2 (15h ago)   15h   10.244.135.12    node3    <none>           <none>

4.4 使用operator部署Seaweedfs集群

4.4.1 部署StorageClass

(seaweedfs集群部署依賴k8s StorageClass)
為簡單起見,本例使用local-pv 的StorageClass
local-pv-storageclass.yaml 內容如下:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

部署StorageClass并查看

kubectl apply -f local-pv-storageclass.yaml
[root@master ~]# kubectl get sc
NAME            PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local-storage   kubernetes.io/no-provisioner   Delete          WaitForFirstConsumer   false                  25h

4.4.2 使用StorageClass預先創建PV

local pv torageClass 無法根據pvc申請動態創建pv,所以需要集群規劃和pvc申請,手動創建pv,本例按照集群規劃創建3個volume的副本,2個filer的副本,對應創建3個volume 的pv,2個filer的pv。以下給出2個組件手動創建pv的yaml示例。

volume_local_pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-volume-pv-1
spec:capacity:storage: 5GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: local-storagelocal:path: /data/seaweedfs-volume-pv-datanodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node1volumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-volume-pv-2
spec:capacity:storage: 5GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: local-storagelocal:path: /data/seaweedfs-volume-pv-datanodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node2volumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-volume-pv-3
spec:capacity:storage: 5GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: local-storagelocal:path: /data/seaweedfs-volume-pv-datanodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node3volumeMode: Filesystemfiler_local_pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-filer-pv-1
spec:capacity:storage: 2GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: local-storagelocal:path: /data/seaweedfs-filer-pv-datanodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node1volumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolume
metadata:name: seaweedfs-filer-pv-2
spec:capacity:storage: 2GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: RetainstorageClassName: local-storagelocal:path: /data/seaweedfs-filer-pv-datanodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node2volumeMode: Filesystem

創建pv前需要在k8s 相關node節點創建pv的實際映射的目錄

mkdir /data/seaweedfs-filer-pv-data
mkdir /data/ seaweedfs-volume-pv-data

創建pv

[root@master cluster]# kubectl apply -f volume_local_pv.yaml -f filer_local_pv.yaml 
persistentvolume/seaweedfs-volume-pv-1 created
persistentvolume/seaweedfs-volume-pv-2 created
persistentvolume/seaweedfs-volume-pv-3 created
persistentvolume/seaweedfs-filer-pv-1 created
persistentvolume/seaweedfs-filer-pv-2 created 

查看pv狀態

[root@master cluster]# kubectl get pv
NAME                    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS    REASON   AGE
seaweedfs-filer-pv-1    2Gi        RWO            Retain           Available           local-storage            46s
seaweedfs-filer-pv-2    2Gi        RWO            Retain           Available           local-storage            46s
seaweedfs-volume-pv-1   5Gi        RWO            Retain           Available           local-storage            46s
seaweedfs-volume-pv-2   5Gi        RWO            Retain           Available           local-storage            46s
seaweedfs-volume-pv-3   5Gi        RWO            Retain           Available           local-storage            46s

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/914816.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/914816.shtml
英文地址,請注明出處:http://en.pswp.cn/news/914816.shtml

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

相關文章

Git CLI高危任意文件寫入漏洞(CVE-2025-48384)PoC已公開

Git CLI&#xff08;命令行界面&#xff09;中存在一個高危漏洞&#xff0c;攻擊者可利用該漏洞在Linux和macOS系統上實現任意文件寫入。目前該漏洞的概念驗證&#xff08;PoC&#xff09;利用代碼已公開。該漏洞編號為CVE-2025-48384&#xff0c;CVSS嚴重性評分為8.1分&#x…

前端開發中關于表單內容的使用和基礎知識

在前邊&#xff0c;我們已經寫過Web前端開發&#xff0c;Web前端開發&#xff0c;萬字詳細博文帶你HTML&#xff0c;CSS快速入門&#xff08;上篇&#xff09;和Web前端開發&#xff0c;一文帶你HTML&#xff0c;CSS快速入門&#xff08;下篇&#xff09;&#xff0c;使用近兩萬…

linux 安裝mysql保姆教程

安裝包下載地址: MySQL :: Download MySQL Community Server (Archived Versions) 解壓到安裝包&#xff1a; tar -zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz 創建Mysql用戶組和用戶 groupadd mysql useradd -r -g mysql mysql 編譯安裝并初始化 進入/home/mysql/m…

Android系統的問題分析筆記 - Android上的調試方式 bugreport

在Android開發和系統調試中&#xff0c;bugreport&#xff08;錯誤報告&#xff09; 是一份包含設備詳細系統狀態、運行日志及應用行為的綜合報告&#xff0c;是定位和診斷App崩潰、系統異常、性能問題等的核心工具。無論是開發者排查用戶反饋的問題&#xff0c;還是設備廠商調…

GESP2025年6月認證C++四級( 第三部分編程題(2)排序)

參考程序&#xff1a;#include <cstdio> #include <algorithm> #include <vector> #include <iostream> using namespace std;int main() {int n, ans 0;// 讀取學生人數scanf("%d", &n);// 用 vector 存儲每個學生的身高和體重&#x…

SQL155 大小寫混亂時的篩選統計

SQL155 大小寫混亂時的篩選統計 題目理解 假設我們有一個考試系統數據庫&#xff0c;里面有&#xff1a; exam_record表&#xff1a;記錄學生考試作答情況examination_info表&#xff1a;記錄考試信息&#xff0c;包括每個考試的類別標簽(tag) ?問題描述?&#xff1a; 有…

無人機圖像中的小目標檢測新利器:深入解析 LAM-YOLO 模型

【導讀】 隨著無人機技術的發展&#xff0c;從交通監控到農業測繪&#xff0c;各類任務中對“空中視角下的小目標檢測”需求激增。然而&#xff0c;由于無人機拍攝視角多變、目標尺寸微小、環境光照復雜等因素&#xff0c;傳統檢測模型常常出現“漏檢”“誤檢”問題。 LAM-YO…

Rust 基礎大綱

Rust 基礎大綱1.Summary安裝教材2 Rust 源1.Summary 安裝 https://www.rust-lang.org/zh-CN/tools/install curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh# 安裝完成后&#xff0c;驗證是否成功 rustc -V cargo -V# 創建項目 cargo new my_project # 編譯項…

PostgreSQL 大數據量(超過50GB)導出方案

1.正常導出導出指定庫./pg_dump -d test_db -p 2360 > /home/softwares/postgresql/test_db.sql導出指定表./pg_dump -p 2360 -U postgres -t test_schema.test_table test_db > /home/softwares/postgresql/m.sql-t參數說明&#xff0c;-t test_schema.test_table test…

終端安全最佳實踐

什么是終端安全&#xff1f;終端安全通過保護組織中的設備的過程&#xff0c;來保護公司網絡免受漏洞和網絡攻擊。主要的任務包括&#xff1a;更新終端補丁、遵循相關安全標準和要求、滿足各種合規性策略設置等等。終端安全和防病毒之間的區別是什么&#xff1f;殺毒軟件可以幫…

【UE4 UE5】UE設置屏幕分辨率 全屏、窗口設置的方法

1.在藍圖中設置如下 設置全屏模式藍圖節點可以選擇全屏或者窗口 2.通過執行控制臺命令設置 注意:"x"是英文字母x w:窗口 f:全屏 3.通過修改項目配置文件設置。 打開 項目路徑\Saved\Config\Windows下的GameUserSettings.ini文件 在文件中進行相應修改 ?…

非控制器(如 Service、工具類)中便捷地獲取當前 HTTP 請求的上下文信息

非控制器&#xff08;如 Service、工具類&#xff09;中便捷地獲取當前 HTTP 請求的上下文信息 在 Spring 框架的 Web 開發中&#xff0c;RequestContextHolder 是一個非常實用的工具類&#xff0c;它的主要作用是在非控制器&#xff08;如 Service、工具類&#xff09;中便捷地…

Excel處理控件Aspose.Cells教程:使用 Python 在 Excel 中創建甘特圖

時間軸上的任務可視化有助于更好地管理項目。本文將學習如何使用Aspose.Cells for Python 通過 .NET在 Excel 中創建甘特圖。只需幾行代碼&#xff0c;即可將簡單的任務數據轉換為動態清晰的可視化時間軸&#xff0c;非常適合用于報表、儀表板和規劃文檔。 Aspose.Cells官方試…

【RK3568 平臺I2C協議與AGS10驅動開發】

RK3568 平臺I2C協議與AGS10驅動開發一、I2C 總線協議基礎二、I2C 通信過程詳解三、AGS10 傳感器概述四、AGS10驅動開發1. 硬件連接2. 設備樹&#xff08;DTS&#xff09;配置3. 內核驅動開發五、調試與驗證六、總結引言在嵌入式系統開發中&#xff0c;傳感器數據采集是常見需求…

arm版本的ubuntu安裝git或者vim等方法

看起來你在基于 ARM 的 Ubuntu 系統上安裝 Vim 時遇到了問題&#xff0c;錯誤提示為“E: 無法定位軟件包 vim”。這通常是因為系統的軟件包列表未更新&#xff0c;或者該軟件包在你檢查的標準軟件源中不可用。以下是通常可以解決這個問題的方法&#xff1a;1. 更新軟件包列表“…

MFC擴展庫BCGControlBar Pro v36.2新版亮點:可視化設計器升級

BCGControlBar庫擁有500多個經過全面設計、測試和充分記錄的MFC擴展類。 我們的組件可以輕松地集成到您的應用程序中&#xff0c;并為您節省數百個開發和調試時間。 BCGControlBar專業版 v36.2已全新發布了&#xff0c;在這個版本中添加了一個新的擴展器控件、改進了網格和報表…

小杰學C(eleven day)——莫道浮云終蔽日,總有云開霧散時。

1.結構體&#xff08;1&#xff09;內容定義&#xff1a;1.用戶自定義的數據類型2.可以包含若干不同數據類型&#xff08;可相同&#xff09;的成員變量3.這些數據項組合起來反應某一信息格式&#xff1a;struct 結構體名 (用戶自定義的數據類型){數據類型 成員變量1;數據類型 …

海豚遠程控制APP:隨時隨地,輕松掌控手機

在快節奏的現代生活中&#xff0c;我們常常需要在不同設備之間切換&#xff0c;管理手機也變得越來越重要。無論是遠程辦公、遠程學習還是日常生活中對手機的管理&#xff0c;一款高效、便捷的遠程控制軟件都能極大地提升我們的效率。海豚遠程控制APP正是這樣一款功能強大的手機…

Linux/Ubuntu安裝go

Linux/Ubuntu安裝go1. 首先移除舊版本&#xff08;如有&#xff09;&#xff1a;2. 下載Go 1.23.9安裝包&#xff1a;3. 解壓到系統目錄&#xff1a;4. 設置環境變量&#xff08;添加到~/.profile或~/.bashrc文件末尾&#xff09;&#xff1a;5.使環境變量生效&#xff1a;6. 驗…

教程:如何快速查詢 A 股實時 K線和5檔盤口

實時行情數據是量化交易策略、看板系統和交易決策系統的重要輸入。本文將以 Infoway API 提供的 WebSocket API 為例&#xff0c;教你如何使用 Python 快速接入并獲取 A 股的實時 K線數據 和 盤口數據。一、準備工作安裝 WebSocket 庫&#xff1a;pip install websockets二、查…