CI/CD(三) 安裝nfs并指定k8s默認storageClass

一、NFS 服務端安裝(主節點 10.60.0.20)

1. 安裝 NFS 服務端

sudo apt update
sudo apt install -y nfs-kernel-server

2. 創建共享目錄并配置權限

sudo mkdir -p /data/k8s sudo chown nobody:nogroup /data/k8s

# 允許匿名訪問

sudo chmod 777 /data/k8s

3. 配置 NFS 導出規則

編輯 /etc/exports 文件:

sudo nano /etc/exports

添加以下內容(允許從節點讀寫):

/data/k8s *(rw,sync,no_subtree_check,no_root_squash)

4. 啟動并驗證 NFS 服務

sudo systemctl restart nfs-kernel-server

sudo systemctl enable nfs-kernel-server

# 檢查導出列表

sudo exportfs -v

二、NFS 客戶端安裝(所有節點)

1. 所有節點安裝 NFS 客戶端

sudo apt update sudo apt install -y nfs-common

2. 手動掛載測試(可選)

# 在從節點測試掛載

sudo mkdir -p /mnt/nfs

sudo mount 10.60.0.20:/data/k8s /mnt/nfs

# 驗證掛載

df -h | grep nfs

3. 配置持久化掛載(所有節點)

sudo nano /etc/fstab

添加:

10.60.0.20:/data/k8s /mnt/nfs nfs defaults 0 0

執行掛載:

sudo mount -a

三、Kubernetes 配置 NFS 存儲類

1. 創建 ServiceAccount 和 RBAC 權限
# nfs-rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:name: nfs-provisioner
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: nfs-provisioner-binding
subjects:- kind: ServiceAccountname: nfs-provisionernamespace: default
roleRef:kind: ClusterRolename: cluster-adminapiGroup: rbac.authorization.k8s.io

應用配置:

kubectl apply -f nfs-rbac.yaml
2. 部署 NFS Provisioner
# nfs-provisioner.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nfs-client-provisioner
spec:replicas: 1selector:matchLabels:app: nfs-provisionertemplate:metadata:labels:app: nfs-provisionerspec:serviceAccountName: nfs-provisionercontainers:- name: nfs-clientimage: registry.cn-beijing.aliyuncs.com/mydlq/nfs-subdir-external-provisioner:v4.0.0env:- name: PROVISIONER_NAMEvalue: fuseim.pri/ifs- name: NFS_SERVERvalue: 10.60.0.20  # 主節點 IP- name: NFS_PATHvalue: /data/k8s    # 共享目錄路徑volumeMounts:- name: nfs-rootmountPath: /persistentvolumesvolumes:- name: nfs-rootnfs:server: 10.60.0.20path: /data/k8s
應用配置:
kubectl apply -f nfs-provisioner.yaml
3. 創建默認 StorageClass
# nfs-storageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfs-storageannotations:storageclass.kubernetes.io/is-default-class: "true"
provisioner: fuseim.pri/ifs
parameters:archiveOnDelete: "false"

應用配置:

kubectl apply -f nfs-storageclass.yaml

四、驗證存儲類

檢查存儲類狀態

kubectl get sc
# 輸出應顯示 nfs-storage 為 DEFAULT

測試 PVC 創建

# test-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: test-pvc
spec:accessModes:- ReadWriteManystorageClassName: nfs-storageresources:requests:storage: 1Gi

應用并驗證:

kubectl apply -f test-pvc.yaml
kubectl get pvc test-pvc  # 狀態應為 Bound

常見問題處理

  • 掛載失敗:檢查主節點防火墻是否開放?2049(NFS)、111(RPC)端口?
    ?
  • PVC 未綁定:檢查?nfs-provisioner?Pod 日志:
    kubectl logs -l app=nfs-provisioner
  • 權限拒絕:確保共享目錄權限為?777,且?/etc/exports?中配置了?no_root_squash?

    通過以上步驟,可為 Kubernetes 集群提供基于 NFS 的持久化存儲支持,解決 "沒有存儲類" 的問題。

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

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

相關文章

【QA】單件模式在Qt中有哪些應用?

單例設計模式確保一個類僅有一個實例,并提供一個全局訪問點來獲取該實例。在 Qt 框架中,有不少類的設計采用了單例模式,以下為你詳細介紹并給出相應代碼示例。 1. QApplication QApplication 是 Qt GUI 應用程序的核心類,每個 Q…

存儲過程觸發器習題整理1

46、{blank}設有商品表(商品號,商品名,單價)和銷售表(銷售單據號,商品號,銷售時間,銷售數量,銷售單價)。其中,商品號代表一類商品,商品號、單價、銷售數量和銷售單價均為整型。請編寫…

基于ChatGPT、GIS與Python機器學習的地質災害風險評估、易發性分析、信息化建庫及災后重建高級實踐

第一章、ChatGPT、DeepSeek大語言模型提示詞與地質災害基礎及平臺介紹【基礎實踐篇】 1、什么是大模型? 大模型(Large Language Model, LLM)是一種基于深度學習技術的大規模自然語言處理模型。 代表性大模型:GPT-4、BERT、T5、Ch…

單表達式倒計時工具:datetime的極度優雅(智普清言)

一個簡單表達式,也可以優雅自成工具。 筆記模板由python腳本于2025-03-22 20:25:49創建,本篇筆記適合任意喜歡學習的coder翻閱。 【學習的細節是歡悅的歷程】 博客的核心價值:在于輸出思考與經驗,而不僅僅是知識的簡單復述。 Pyth…

最優編碼樹的雙子性

現在看一些書,不太愿意在書上面做一些標記,也沒啥特殊的原因。。哈哈。 樹的定義 無環連通圖,極小連通圖,極大無環圖。 度 某個節點,描述它的度,一般默認是出度,分叉的邊的條數。或者說孩子…

MiB和MB

本文來自騰訊元寶 MiB 和 ?MB 有區別,盡管它們都用于表示數據存儲的單位,但它們的計算方式不同,分別基于不同的進制系統。 1. ?MiB(Mebibyte)? ?MiB 是基于二進制的單位,使用1024作為基數。1 MiB 102…

Labview和C#調用KNX API 相關東西

敘述:完全沒有聽說過KNX這個協議...................我這次項目中也是簡單的用了一下沒有過多的去研究 C#調用示例工程鏈接(labview調用示例在 DEBUG文件夾里面) 通過網盤分享的文件:KNX調用示例.zip 鏈接: https://pan.baidu.com/s/1NQUEYM11HID0M4ksetrTyg?pwd…

損失函數理解(二)——交叉熵損失

損失函數的目的是為了定量描述不同模型(例如神經網絡模型和人腦模型)的差異。 交叉熵,顧名思義,與熵有關,先把模型換成熵這么一個數值,然后用這個數值比較不同模型之間的差異。 為什么要做這一步轉換&…

Kubernetes的Replica Set和ReplicaController有什么區別

ReplicaSet 和 ReplicationController 是 Kubernetes 中用于管理應用程序副本的兩種資源,它們有類似的功能,但 ReplicaSet 是 ReplicationController 的增強版本。 以下是它們的主要區別: 1. 功能的演進 ReplicationController 是 Kubernete…

信息系統運行管理員教程3--信息系統設施運維

第3章 信息系統設施運維 信息系統設施是支撐信息系統業務活動的信息系統軟硬件資產及環境。 第1節 信息系統設施運維的管理體系 信息系統設施運維的范圍包含信息系統涉及的所有設備及環境,主要包括基礎環境、硬件設備、網絡設備、基礎軟件等。 信息系統設施運維…

如何通過Python實現自動化任務:從入門到實踐

在當今快節奏的數字化時代,自動化技術正逐漸成為提高工作效率的利器。無論是處理重復性任務,還是管理復雜的工作流程,自動化都能為我們節省大量時間和精力。本文將以Python為例,帶你從零開始學習如何實現自動化任務,并通過一個實際案例展示其強大功能。 一、為什么選擇Pyt…

Spring Boot 與 MyBatis Plus 整合 KWDB 實現 JDBC 數據訪問

? 引言 本文主要介紹如何在 IDEA 中搭建一個使用 Maven 管理的 Spring Boot 應用項目工程,并結合在本地搭建的 KWDB 數據庫(版本為:2.0.3)來演示 Spring Boot 與 MyBatis Plus 的集成,以及對 KWDB 數據庫的數據操作…

Java鎖等待喚醒機制

在 Java 并發編程中,鎖的等待和喚醒機制至關重要,通常使用 wait()、notify() 和 notifyAll() 來實現線程間的協調。本文將詳細介紹這些方法的用法,并通過示例代碼加以說明。 1. wait()、notify() 與 notifyAll() 在 Java 中,Obj…

? UNIX網絡編程筆記:TCP客戶/服務器程序示例

服務器實例 有個著名的項目&#xff0c;tiny web&#xff0c;本項目將其改到windows下&#xff0c;并使用RAII重構&#xff0c;編寫過程中對于內存泄漏確實很頭疼&#xff0c;還沒寫完&#xff0c;后面會繼續更&#xff1a; #include <iostream> #include <vector&g…

AI Agent開發大全第四課-提示語工程:從簡單命令到AI對話的“魔法”公式

什么是提示語工程&#xff1f;一個讓AI“聽話”的秘密 如果你曾經嘗試過用ChatGPT或者其他大語言模型完成任務&#xff0c;那么你一定遇到過這樣的情況&#xff1a;明明你的問題是清晰的&#xff0c;但答案卻離題萬里&#xff1b;或者你認為自己提供的信息足夠詳盡&#xff0c…

系統架構設計知識體系總結

1.技術選型 1.什么是技術選型&#xff1f; 技術選型是指評估和選擇在項目或系統開發中使用的最合適的技術和工具的過程。這涉及考慮基于其能力、特性、與項目需求的兼容性、可擴展性、性能、維護和其他因素的各種可用選項。技術選型的目標是確定與項目目標相符合、能夠有效解…

基于3DMax與Vray引擎的輕量級室內場景渲染實踐

歡迎踏入3DMAX室內渲染的沉浸式學習之旅!在這個精心設計的實戰教程中,我們將攜手揭開3DMAX與Vray這對黃金搭檔在打造現實室內場景時的核心奧秘。無論您是渴望入門的3D新手,還是追求極致效果的專業設計師,這里都將為您呈現從場景藍圖構建到光影魔法施加的完整技術圖譜。我們…

邏輯卷,vdo,(阿里加速器)

一、邏輯卷 10 20 30 1.邏輯卷的2個特點 &#xff08;1&#xff09;邏輯卷可以將多個分區或者磁盤整合成一個更大的邏輯磁盤&#xff0c;然后可以從邏輯磁盤上劃分出分區&#xff08;邏輯磁盤的大小等于整合的物理磁盤大小之和。&#xff09; &#xff08;2&#xff09;能…

檢索增強生成(2)本地PDF 本地嵌入模型

from langchain_community.document_loaders import PyPDFLoader from pathlib import Pathdef load_local_pdf(file_path):if not Path(file_path).exists():raise FileNotFoundError(f"文件 {file_path} 不存在&#xff01;")loader PyPDFLoader(file_path)try:do…

安全守護:反光衣檢測技術的革新之路

視覺分析助力船上工人反光衣檢測 在現代工業生產與作業環境中&#xff0c;安全始終是首要考慮的因素。對于水上作業&#xff0c;如船舶維護、海上施工等場景&#xff0c;工人穿戴反光衣是預防事故、提高可見性的重要措施。然而&#xff0c;傳統的人工檢查方式不僅效率低下&…