K8S學習之基礎二十四:k8s的持久化存儲之pv和pvc

K8S的存儲之pv和pvc

在 Kubernetes (k8s) 中,持久化存儲是通過 PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 來實現的。PVC 是用戶對存儲資源的請求,而 PV 是集群中的實際存儲資源。PVC 和 PV 的關系類似于 Pod 和 Node 的關系。

PersistentVolume (PV)

PV 是集群中的一塊存儲資源,可以由管理員預先配置,或者通過 StorageClass 動態創建。PV 是集群級別的資源,獨立于 Pod 的生命周期。

PersistentVolumeClaim (PVC)

PVC 是用戶對存儲資源的請求。用戶通過 PVC 來申請特定大小和訪問模式的存儲資源。PVC 會綁定到一個合適的 PV 上,從而為 Pod 提供持久化存儲。

PVC 的使用流程

  1. 創建 PV:管理員預先創建 PV,或者通過 StorageClass 動態創建 PV。
  2. 創建 PVC:用戶創建 PVC,指定所需的存儲大小和訪問模式。
  3. 綁定 PV 和 PVC:Kubernetes 會根據 PVC 的要求,自動綁定一個合適的 PV。
  4. Pod 使用 PVC:在 Pod 的配置中引用 PVC,Pod 就可以使用該 PVC 所綁定的 PV 進行持久化存儲。

PVC 的 YAML 示例

以下是一個 PVC 的 YAML 示例:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: my-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 10GistorageClassName: standard
  • accessModes:指定存儲的訪問模式,常見的有 ReadWriteOnce(單個節點讀寫)、ReadOnlyMany(多個節點只讀)、ReadWriteMany(多個節點讀寫)。
  • resources.requests.storage:指定所需的存儲大小。
  • storageClassName:指定使用的 StorageClass 名稱。如果省略,則使用默認的 StorageClass。

Pod 使用 PVC 的 YAML 示例

以下是一個 Pod 使用 PVC 的 YAML 示例:

apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: nginxvolumeMounts:- mountPath: "/usr/share/nginx/html"name: my-storagevolumes:- name: my-storagepersistentVolumeClaim:claimName: my-pvc
  • volumeMounts:指定容器內掛載的路徑。
  • volumes:指定使用的 PVC。

動態 Provisioning

Kubernetes 支持動態創建 PV,這是通過 StorageClass 來實現的。StorageClass 定義了存儲的類型和參數,當用戶創建 PVC 時,Kubernetes 會根據 StorageClass 自動創建 PV。

以下是一個 StorageClass 的 YAML 示例:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: standard
provisioner: kubernetes.io/aws-ebs
parameters:type: gp2
  • provisioner:指定用于創建 PV 的插件。
  • parameters:指定存儲的具體參數。

總結

  • PVC 是用戶對存儲資源的請求。
  • PV 是集群中的實際存儲資源。
  • PVC 和 PV 的綁定可以是靜態的(預先創建 PV)或動態的(通過 StorageClass 動態創建 PV)。

PV-PVC-POD測試(使用nfs):

vi pv-pvc-pod.yaml
apiVersion: v1
kind: PersistentVolume
metadata:name: v1
spec:capacity:storage: 10Mi  #pv的存儲空間容量accessModes: ["ReadWriteOnce"]nfs:path: /data/volumes/v1     #把nfs的存儲空間創建成pvserver: 172.16.80.131      #nfs服務器的地址
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: my-pvc
spec:accessModes: ["ReadWriteOnce"]resources:requests:storage: 10Mi
---
apiVersion: v1
kind: Pod
metadata:name: pod-pvc
spec:containers:- name: nginximage: 172.16.80.140/nginx/nginx:1.26volumeMounts:- name: nginx-htmlmountPath: /usr/share/nginx/htmlvolumes:- name: nginx-htmlpersistentVolumeClaim:claimName: my-pvc
mkdir /data/volume/v1
echo 'pvc test' > /data/volume/v1/index.html
kubectl get pv
kubectl get pvc
kubectl get pods -owide
curl 10.244.196.129

在這里插入圖片描述

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

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

相關文章

【Hive】Hive安裝

Hive 第一章 Hive的基礎知識 第二章 Hive安裝 第三章 DDL(Data Definition Language)數據定義 第四章 DML(Data Manipulation Language)數據操作 第五章 Hive查詢 第六章 Hive的基礎知識 第七章 Hive函數 第八章 分區表和分桶表 …

關于C/C++語言的初學者在哪刷題,怎么刷題

引言: 這篇博客主要是針對初學者關于怎么在網上刷題,以及在哪里刷題。 1.介紹平臺(在哪刷題): 1.牛客牛客網https://www.nowcoder.com/ :有許多面試題,也有許多供學習者練習的題 2.洛谷洛谷 …

k8s面試題總結(十四)

什么是Helm? Helm是一個k8s的包管理工具,它簡化了應用程序在k8s集群中的部署,管理和維護。類似于rpm包和yum之間的關系。 K8s傳統方式:類似于rpm安裝包的方式,逐步進行安裝,遇到依賴還得解決依賴問題 he…

物理服務器的作用都有哪些?

物理服務器是一種高性能的專用服務器,一般會被運用在大型組織和云計算環境當中,可以為企業和用戶提供數據存儲和計算資源,幫助企業提高整體的工作效率和快速實現業務目標。 物理服務器有著較高的安全性,企業可以將重要的數據信息備…

01 音視頻知識學習(視頻)

圖像基礎概念 ?像素:像素是一個圖片的基本單位,pix是英語單詞picture的簡寫,加上英 語單詞“元素element”,就得到了“pixel”,簡稱px,所以“像素”有“圖像元素” 之意。 ? 分辨率:是指圖像…

有關MyBatis的動態SQL

有關MyBatis動態SQL MyBatis動態SQL是一種根據不同條件靈活拼接SQL語句的技術,基于OGNL表達式實現。動態 SQL 大大減少了編寫代碼的工作量,更體現了 MyBatis 的靈活性、高度可配置性和可維護性。 1.什么是動態SQL? 動態sql可以在一些需要靈活拼接sql…

react使用拖拽,縮放組件,采用react-rnd解決 -完整版

屏幕錄制2025-03-10 10.16.06 以下代碼僅提供左側可視化區域 右側數據根據你們的存儲數據來 大家直接看Rnd標簽設置的屬性即可!!!!! /*** 用戶拖拽水印的最終位置信息*/ export interface ProductWatermarkValue {wat…

Spring Cloud之遠程調用OpenFeign參數傳遞

目錄 OpenFeign參數傳遞 傳遞單個參數 傳遞多個參數 傳遞對象 傳遞JSON OpenFeign參數傳遞 傳遞單個參數 服務提供方product-service RequestMapping("/product") RestController public class ProductController {Autowiredprivate ProductService productSe…

每日一練之移除鏈表元素

題目: 畫圖解析: 方法:雙指針 解答代碼(注:解答代碼帶解析): //題目給的結構體 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* }…

從零開始的python學習(五)P75+P76+P77+P78+P79+P80

本文章記錄觀看B站python教程學習筆記和實踐感悟,視頻鏈接:【花了2萬多買的Python教程全套,現在分享給大家,入門到精通(Python全棧開發教程)】 https://www.bilibili.com/video/BV1wD4y1o7AS/?p6&share_sourcecopy_web&v…

基于SpringBoot實現旅游酒店平臺功能八

一、前言介紹: 1.1 項目摘要 隨著社會的快速發展和人民生活水平的不斷提高,旅游已經成為人們休閑娛樂的重要方式之一。人們越來越注重生活的品質和精神文化的追求,旅游需求呈現出爆發式增長。這種增長不僅體現在旅游人數的增加上&#xff0…

FastAPI 分頁模塊實現詳解

1. 簡介 本文詳細介紹了一個基于 FastAPI 框架的通用分頁處理模塊的實現。該模塊提供了標準的分頁參數處理、數據切片和響應格式化功能,可以輕松地集成到任何 FastAPI 項目中。 2. 代碼實現 2.1 導入必要的模塊 首先,我們需要導入所需的模塊&#xf…

Java 學習記錄:基礎到進階之路(一)

今天,讓我們深入到 Java 項目構建、基礎語法及核心編程概念的領域,一探究竟。 軟件安裝及環境配置請查看之前更新的博客有著詳細的介紹: IDEA軟件安裝&環境配置&中文插件-CSDN博客 目錄 1.Java 項目構建基礎 1.項目中的 SRC 目錄…

Yashan DB 對象管理

一、什么是數據庫對象 數據庫對象是數據庫里面用來存儲和指向數據的各種概念和結構的總稱。數據庫支持的對象包括: ? 表:表是一個邏輯概念,是數據庫組織管理數據的基本單位。 ? 索引:索引是建立在表上的邏輯對象,索…

deepseek 3FS編譯

3FS在ubuntu22.04下的編譯(記錄下編譯過程,方便后續使用) 環境信息 OS ubuntu 22.04內核版本 6.8.0-52-genericlibfuse 3.16.1rust 1.75.0FoundationDB 7.1.66meson 1.0.0ninja 1.10.1 libfuse編譯 以下建議均在root下執行 pip3 install…

python-uiautomator2 安裝教程

目錄 一、簡介 二、支持平臺及語言 三、工作原理 四、安裝 一、簡介 uiautomator2是一個python庫,用于Android的UI自動化測試,其底層基于Google uiautomator,Google提供的uiautomator庫可以獲取屏幕上任意一個APP的任意一個控件屬性&…

無頭瀏覽器與請求簽名技術-Cloudflare防護

在實際數據采集實踐中,許多目標網站(例如 Amazon)都會采用 Cloudflare 等防護措施,防止機器人和非正常流量。本文將分享一個故障場景下的排查與改進方案,講述如何利用無頭瀏覽器、請求簽名技術以及爬蟲代理 IP來實現數…

Spring Cloud之注冊中心之Nacos健康監測和環境隔離

目錄 Nacos健康檢查 兩種健康檢查機制 Nacos服務類型實例 Nacos環境隔離 創建namespace 配置namespace Nacos健康檢查 兩種健康檢查機制 Nacos作為注冊中?, 需要感知服務的健康狀態, 才能為服務調??提供良好的服務. Nacos 中提供了兩種健康檢查機制: 客?…

Vue3實戰學習(Element-Plus常用組件的使用(輸入框、下拉框、單選框多選框、el-image圖片))(上)(5)

目錄 一、Vue3工程環境配置、項目基礎腳手架搭建、Vue3基礎語法、Vue3集成Element-Plus的詳細教程。(博客鏈接如下) 二、Element-Plus常用組件使用。 &#xff08;1&#xff09;el-input。(input輸入框) <1>正常狀態的el-input。 <2>el-input的disable狀態。 <3…

微服務——網關、網關登錄校驗、OpenFeign傳遞共享信息、Nacos共享配置以及熱更新、動態路由

之前學習了Nacos&#xff0c;用于發現并注冊、管理項目里所有的微服務&#xff0c;而OpenFeign簡化微服務之間的通信&#xff0c;而為了使得前端可以使用微服務項目里的每一個微服務的接口&#xff0c;就應該將所有微服務的接口管理起來方便前端調用&#xff0c;所以有了網關。…