k8s-第六節-數據持久化

數據持久化

kubernetes 集群不會為你處理數據的存儲,需要為數據庫掛載一個磁盤來確保數據的安全。

可以選擇云存儲、本地磁盤、NFS。

  • 本地磁盤:可以掛載某個節點上的目錄,但是這需要限定 pod 在這個節點上運行

  • 云存儲:不限定節點,不受集群影響,安全穩定;需要云服務商提供,裸機集群是沒有的。

  • NFS:不限定節點,不受集群影響

hostPath 掛載示例

把節點上的一個目錄掛載到 Pod,但是已經不推薦使用了,https://kubernetes.io/zh/docs/concepts/storage/volumes/#hostpath

配置方式簡單,需要手動指定 Pod 跑在某個固定的節點。
僅供單節點測試使用;不適用于多節點集群。
minikube 提供了 hostPath 存儲 https://minikube.sigs.k8s.io/docs/handbook/persistent_volumes

只能掛載固定目錄,其他目錄丟失數據,不推薦使用,點開手冊即可看到

apiVersion: apps/v1
kind: StatefulSet
metadata:name: mongodb
spec:replicas: 1selector:matchLabels:app: mongodbserviceName: mongodbtemplate:metadata:labels:app: mongodbspec:containers:- name: mongoimage: mongo:4.4# IfNotPresent 僅本地沒有鏡像時才遠程拉,Always 永遠都是從遠程拉,Never 永遠只用本地鏡像,本地沒有則報錯imagePullPolicy: IfNotPresentvolumeMounts:- mountPath: /data/db # 容器里面的掛載路徑name: mongo-data    # 卷名字,必須跟下面定義的名字一致volumes:- name: mongo-data              # 卷名字hostPath:path: /data/mongo-data      # 節點上的路徑 只能掛載指定幾個目錄之下type: DirectoryOrCreate     # 指向一個目錄,不存在時自動創建

持久存儲框架

持久儲存

物理硬盤存儲Storage Class (SC)

將存儲卷劃分為不同的種類,例如:SSD,普通磁盤,本地磁盤,按需使用。https://kubernetes.io/zh/docs/concepts/storage/storage-classes/

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: slow
provisioner: kubernetes.io/aws-ebs
parameters:type: io1iopsPerGB: "10"fsType: ext4

持久存儲卷 PV

  • 持久存儲卷(Persistent Volume,PV)是集群中的一塊存儲,可以被 Pod 掛載到具體的應用容器中使用。
  • 集群管理員需要負責創建并維護這些 PV
  • 持久存儲卷是集群資源,不屬于任何 namespace(不用項目來區分),但需要與某個 namespace 相關聯,因為 Pod 需要通過 namespace 進行調度。

描述卷的具體信息,例如磁盤大小,訪問模式 https://kubernetes.io/zh/docs/concepts/storage/persistent-volumes/

apiVersion: v1
kind: PersistentVolume
metadata:name: mongodata
spec:capacity:storage: 2GivolumeMode: Filesystem  # Filesystem(文件系統) Block(塊)accessModes:- ReadWriteOnce       # 卷可以被一個節點以讀寫方式掛載persistentVolumeReclaimPolicy: DeletestorageClassName: local-storage#   存儲類型,本地存儲,下面要根據所選進行配置local:path: /root/datanodeAffinity:required:# 通過 hostname 限定在某個節點創建存儲卷nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node2

持久存儲卷聲明 PVC

  • 持久存儲卷聲明(Persistent Volume Claim,PVC)是用戶對存儲的請求。
  • PVC 并不是具體存儲設備,而僅僅是一個存儲的“描述”
  • PVC 類似于 Pod,Pod 會消耗節點資源,而 PVC 則消耗 PV 資源。
  • PVC 用于向 Kubernetes 申請存儲資源。
  • PVC 所申請的存儲資源由 PersistentVolume(PV)提供。

對存儲需求的一個申明,可以理解為一個申請單,系統根據這個申請單去找一個合適的 PV還可以根據 PVC 自動創建 PV。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mongodata
spec:accessModes: ["ReadWriteOnce"]storageClassName: "local-storage"resources:requests:storage: 2Gi

為什么要這么多層抽象

  • 更好的分工,運維人員負責提供好存儲(指定PV,SC),開發人員不需要關注磁盤細節,只需要寫一個申請單(編寫PVC)。
  • 方便云服務商提供不同類型的,配置細節不需要開發者關注,只需要一個申請單。
  • 動態創建,開發人員寫好申請單后,供應商可以根據需求自動創建所需存儲卷。

本地磁盤

本地磁盤不支持動態創建,需要提前創建好,并且需要指定存儲類型。

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

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

相關文章

GEE計算遙感生態指數RESI

目錄 RESI濕度綠度熱度干度源代碼歸一化函數代碼解釋整體的代碼功能解釋:導出RSEI計算結果參考文獻RESI RSEI = f (Greenness,Wetness,Heat,Dryness)其遙感定義為: RSEI = f (VI,Wet,LST,SI)式中:Greenness 為綠度;Wetness 為濕度;Thermal為熱度;Dryness 為干度;VI 為植被指數…

文心一言指令:快速入門手冊

文心一言(Wenxin Yiyan)是百度推出的一款人工智能語言模型,能夠生成自然語言內容,回答問題,進行翻譯等多種任務。以下是詳細的文心一言指令使用指南,幫助您快速上手。 目錄 簡介注冊與登錄接口調用常用指…

手寫starter核心思路流程-全網最詳細版本

全網最詳細手寫starter組件教程 那么在寫這篇博客之前,先問一下大家為什么要寫starter組件,僅僅只是為了炫技嗎?還是真正的在業務中需要.在現在的開發環境下,什么是競爭力? 舉例分頁查詢來說,每個來公司的程序員都有一套自己寫分頁的流程,但是這套流程基本上都是重復的,那么…

Docker學習筆記(一)概念理解

一、什么是docker容器 Docker容器是一種輕量級、可移植的軟件封裝技術,它允許開發者將應用程序及其依賴、配置文件、運行環境等打包到一個獨立的、自包含的執行單元中。容器與虛擬機相似,都提供了隔離的運行環境,但容器更加輕量級&#xff0c…

如何清理電腦內存?讓電腦運行如飛!

電腦內存(RAM)的清理對于維持系統的流暢運行至關重要。隨著使用時間的增加,系統內存會被各種應用程序和后臺進程占用,導致系統響應變慢,甚至出現卡頓現象。通過有效地清理內存,可以提升電腦的性能&#xff…

深入理解如何撤銷 Git 中不想提交的文件

個人名片 🎓作者簡介:java領域優質創作者 🌐個人主頁:碼農阿豪 📞工作室:新空間代碼工作室(提供各種軟件服務) 💌個人郵箱:[2435024119qq.com] &#x1f4f1…

初識 ANTLR4:構建強大解析器的利器

初識 ANTLR4:構建強大解析器的利器 在現代軟件開發中,解析和處理各種形式的文本數據是一個常見而又復雜的任務。無論是編譯器、數據格式轉換工具,還是協議解析器,解析器的作用都至關重要。ANTLR4(ANother Tool for La…

MySQL內存使用率高且不釋放問題排查與總結

背景 生產環境mysql 5.7內存占用超過90%以上,且一直下不來。截圖如下: 原因分析 1、確定mysql具體的占用內存大小,通過命令:cat /proc/Mysql進程ID/status查看 命令執行后的結果比較多(其他參數的含義想了解可參考這…

靜態路由的配置

5.3靜態路由 靜態路由由網絡管理員手動配置,配置方便,對系統要求低,適用于拓撲結構簡單并且穩定的小型網絡。缺點是不能自動適應網絡拓撲的變化,需要人工干預。 5.3.1靜態路由實驗 1、實驗需求 ① 掌握路由表的概念&#xff1…

低代碼開發的終局:數字化應用創新智能平臺

隨著數字化轉型的加速,企業和開發者們面臨著越來越多的壓力來快速交付創新的數字化解決方案。在這樣的背景下,低代碼開發平臺逐漸成為了一種強大的工具,幫助開發者們在不需要深入編碼的情況下快速構建應用程序。 低代碼開發的定義和優勢 低代…

cpp隨筆——如何實現一個簡單的進程心跳功能

什么是進程的心跳 在我們日常后臺服務程序運行中,一般是調度模塊,進程心跳以及進程監控共同工作,進而實現實現服務的穩定運行,在前面我們介紹過如何去實現一個簡單的調度模塊,而今天我們所要介紹的就是如何實現進程的心跳,首先什么是進程的心…

git上傳文件

git init git add . git commit -m " " git remote add origin 倉庫的地址 git push -u origin master 如果出現以下問題 可以用這一句強制上傳 git push -f origin master

Centos下rpm和yum執行卡住問題(已解決)

問題描述 執行rpm和yum卡住, 沒有任何報錯信息,且無法 ctrl c 終止,只能通過后臺 kill -9 殺死。 問題排查: 查看yum日志:yum -vv 軟件包 會發現卡在 loading keyring from rpmdb,即load DB存在問題。 …

C++ QT 全局信號的實現

每次做全局信號都需要重新建立文件&#xff0c;太麻煩了&#xff0c;記錄一下&#xff0c;以后直接復制。 頭文件 globalSignalEmitter.h #pragma once //#ifndef GLOBALSIGNALEITTER_H //#define GLOBALSIGNALEITTER_H#include <QObject>class GlobalSignalEmitter : …

使用 llamaIndex 快速實現智能體

AI 智能體就是可以根據當前環境進行推理&#xff0c;并根據處理結果進行下一步的操作。簡單來說 AI 智能體可以與外界環境進行交互&#xff0c;并根據結果執行更復雜的操作。本文將通過llamaIndex 實現一個簡單的 Agent 實時獲取數據&#xff0c;由于大模型是通過靜態數據進行訓…

收銀系統源碼分享-PHP可二開

千呼新零售2.0系統是零售行業連鎖店一體化收銀系統&#xff0c;包括線下收銀線上商城連鎖店管理ERP管理商品管理供應商管理會員營銷等功能為一體&#xff0c;線上線下數據全部打通。 適用于商超、便利店、水果、生鮮、母嬰、服裝、零食、百貨、寵物等連鎖店使用。 私有化獨立…

游戲工作室如何巧妙應對IP封禁風險?

游戲工作室在使用IP時&#xff0c;面臨著封號的風險&#xff0c;因此需要采取一些防封技巧來保護自己的運營。以下是一些游戲工作室常用的防封技巧。 1. 多IP輪換 游戲工作室可以使用多個代理IP&#xff0c;并定期輪換它們。這樣做可以減少單個IP被頻繁訪問同一游戲服務器而被…

sqlalchemy分頁查詢

sqlalchemy分頁查詢 在SQLAlchemy中,可以使用limit和offset方法實現分頁查詢 from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine from models import MyModel # 假設MyModel是你定義的模型# 連接數據庫 engine = create_engine(sqlite:///myd…

C++_03

1、構造函數 1.1 什么是構造函數 類的構造函數是類的一種特殊的成員函數&#xff0c;它會在每次創建類的新對象時執行。 每次構造的是構造成員變量的初始化值&#xff0c;內存空間等。 構造函數的名稱與類的名稱是完全相同的&#xff0c;并且不會返回任何類型&#xff0c;也不…

MODBUS TCP協議簡介

目錄 一、協議概述 二、協議結構 三、功能碼 四、通信過程 五、注意事項 六、應用實例 七、優點 八、缺點 MODBUS TCP協議是一種基于TCP/IP協議的Modbus變種&#xff0c;它允許Modbus協議在以太網網絡上運行&#xff0c;使得設備之間可以通過IP網絡交換數據。以下是MOD…