k8s存储介绍(六)StorangeClass

news2025/4/2 14:02:30

一、Kubernetes 存储类(StorageClass)详解

1. 什么是 StorageClass?

在 Kubernetes 中,StorageClass(存储类)是一种用于动态创建 PersistentVolume(PV)的资源对象。它允许管理员根据不同的存储需求创建不同的存储策略,用户只需要声明 PersistentVolumeClaim(PVC)并指定 StorageClass,Kubernetes 就能自动分配相应的存储。

2. 为什么需要 StorageClass?

在没有 StorageClass 的情况下,管理员需要手动创建 PersistentVolume,并与 PersistentVolumeClaim 进行匹配。这种方式适用于静态存储,但在大规模集群或云环境下,动态创建存储更加灵活。因此,StorageClass 解决了以下问题:

  • 自动化存储分配:无需手动创建 PV,而是由 Kubernetes 负责创建和管理。

  • 支持不同的存储后端:适用于 AWS EBS、Google Persistent Disk、Azure Disk、NFS、Ceph 等多种存储方案。

  • 提供不同的存储策略:支持不同的存储性能(高 IOPS、低延迟)、快照、备份等需求。

3. StorageClass 的关键字段

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast-storage
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
主要字段解析:
  • provisioner:指定存储供应商,例如 AWS EBS(kubernetes.io/aws-ebs)、Google Cloud Persistent Disk(kubernetes.io/gce-pd)等。

  • parameters:存储类的参数,例如磁盘类型、性能级别等。

  • reclaimPolicy(回收策略):定义存储释放后的行为。

    • Delete(删除):删除 PV 和底层存储。

    • Retain(保留):数据仍然保留,需要手动清理。

    • Recycle(回收):(已废弃)清理数据后重新使用。

  • volumeBindingMode(卷绑定模式):

    • Immediate(立即绑定):PVC 创建时立即绑定。

    • WaitForFirstConsumer(等待首个消费者):只有 Pod 使用 PVC 时才会绑定 PV,适用于多可用区调度。

  • allowVolumeExpansion(允许扩容):是否允许存储动态扩展。

4. 常见存储供应商

存储后端Provisioner适用场景
AWS EBSkubernetes.io/aws-ebsAWS 云环境,块存储
GCE PDkubernetes.io/gce-pdGCP 云存储
Azure Diskkubernetes.io/azure-diskAzure 云存储
NFSkubernetes.io/nfs共享存储
Cephceph.com/rbd分布式存储

5. PVC 使用 StorageClass 示例

创建 PVC 时使用 StorageClass
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: example-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: fast-storage
Pod 挂载 PVC 示例
apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
    - name: app-container
      image: nginx
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: storage
  volumes:
    - name: storage
      persistentVolumeClaim:
        claimName: example-pvc

6. StorageClass 的应用场景

  1. 自动化存储管理:减少手动创建 PV 的复杂性,适用于云环境。

  2. 多种存储策略:支持不同的存储性能需求,如 SSD、高吞吐磁盘等。

  3. 多可用区支持:结合 WaitForFirstConsumer 模式,提高存储调度灵活性。

  4. 动态扩展存储:支持 PVC 扩容,提高存储弹性。

7. 总结

  • StorageClass 允许 Kubernetes 动态创建 PV,简化存储管理。

  • 适用于云存储、分布式存储和本地存储等多种场景。

  • 通过 reclaimPolicyvolumeBindingModeallowVolumeExpansion 提供灵活的存储策略。

  • 在 CI/CD、数据库存储、日志存储等场景下广泛应用。

二、在 Kubernetes 中使用 NFS 作为存储类(StorageClass)

1. 部署 NFS 服务器与客户端

在 Kubernetes 集群的某个节点上安装 NFS 服务器。(但是在每个节点都要安装NFS客户端)

安装 NFS 服务器(以 Ubuntu 为例)
sudo apt update && sudo apt install -y nfs-kernel-server
sudo mkdir -p /mnt/nfs-share
sudo chmod 777 /mnt/nfs-share
sudo echo "/mnt/nfs-share *(rw,sync,no_root_squash,no_subtree_check)" | sudo tee -a /etc/exports
sudo exportfs -rav
sudo systemctl restart nfs-kernel-server

安装 NFS 客户端

sudo apt update && sudo apt install -y nfs-common

2. 创建 NFS StorageClass

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-storage
provisioner: nfs-provisioner
parameters:
  archiveOnDelete: "false"

3. 部署 NFS Provisioner(Dynamic Provisioning)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-provisioner
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nfs-provisioner
  template:
    metadata:
      labels:
        app: nfs-provisioner
    spec:
      containers:
      - name: nfs-provisioner
        image: quay.io/external_storage/nfs-client-provisioner:latest
        volumeMounts:
        - mountPath: /persistentvolumes
          name: nfs-volume
        env:
        - name: NFS_SERVER
          value: "<NFS服务器IP>"
        - name: NFS_PATH
          value: "/mnt/nfs-share"
      volumes:
      - name: nfs-volume
        nfs:
          server: "<NFS服务器IP>"
          path: "/mnt/nfs-share"

4. 创建 PersistentVolumeClaim (PVC)

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
  storageClassName: nfs-storage

5. 在 Pod 中挂载 PVC

apiVersion: v1
kind: Pod
metadata:
  name: nfs-pod
spec:
  containers:
  - name: app-container
    image: nginx
    volumeMounts:
    - mountPath: "/usr/share/nginx/html"
      name: nfs-storage
  volumes:
  - name: nfs-storage
    persistentVolumeClaim:
      claimName: nfs-pvc

6. 验证 NFS 挂载是否成功

kubectl apply -f nfs-storageclass.yaml
kubectl apply -f nfs-provisioner.yaml
kubectl apply -f nfs-pvc.yaml
kubectl apply -f nfs-pod.yaml
kubectl get pods
kubectl exec -it nfs-pod -- df -h

如果成功,Pod 内 /usr/share/nginx/html 目录将会挂载到 NFS 服务器的 /mnt/nfs-share,多个 Pod 可以共享此存储。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2325632.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis-04.Redis常用命令-字符串常用命令

一.字符串操作命令 set name jack 点击左侧name&#xff0c;显示出值。 get name get abc&#xff1a;null setex key seconds value&#xff1a;设置过期时间&#xff0c;过期后该键值对将会被删除。 然后再get&#xff0c;在过期时间内可以get到&#xff0c;过期get不到。…

Epub转PDF软件Calibre电子书管理软件

Epub转PDF软件&#xff1a;Calibre电子书管理软件 https://download.csdn.net/download/hu5566798/90549599 一款好用的电子书管理软件&#xff0c;可快速导入电脑里的电子书并进行管理&#xff0c;支持多种格式&#xff0c;阅读起来非常方便。同时也有电子书格式转换功能。 …

FAST-LIVO2 Fast, Direct LiDAR-Inertial-Visual Odometry论文阅读

FAST-LIVO2 Fast, Direct LiDAR-Inertial-Visual Odometry论文阅读 论文下载论文翻译FAST-LIVO2: 快速、直接的LiDAR-惯性-视觉里程计摘要I 引言II 相关工作_直接方法__LiDAR-视觉&#xff08;-惯性&#xff09;SLAM_ III 系统概述IV 具有顺序状态更新的误差状态迭代卡尔曼滤波…

【Git】--- Git远程操作 标签管理

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; Git 前面我们学习的操作都是在本地仓库进行了&#xff0c;如果团队内多人协作都在本地仓库操作是不行的&#xff0c;此时需要新的解决方案 --- 远程仓库。…

论文阅读笔记——ST-4DGS,WideRange4D

ST-4DGS ST-4DGS 论文 在 4DGS 中&#xff0c;变形场 F \mathcal{F} F 与运动参数 X 和形状参数 ( S , R ) (S,R) (S,R) 高度耦合&#xff0c;导致训练时高斯表示紧凑型退化&#xff0c;影响动态渲染质量。由此&#xff0c;本文提出两种方法解耦运动与形状参数&#xff0c;保…

[python]基于yolov8实现热力图可视化支持图像视频和摄像头检测

YOLOv8 Grad-CAM 可视化工具 本工具基于YOLOv8模型&#xff0c;结合Grad-CAM技术实现目标检测的可视化分析&#xff0c;支持图像、视频和实时摄像头处理。 功能特性 支持多种Grad-CAM方法实时摄像头处理视频文件处理图像文件处理调用简单 环境要求 Python 3.8需要电脑带有…

豪越科技消防一体化平台:打通消防管理“任督二脉”

在城市的车水马龙间&#xff0c;火灾隐患如潜藏的暗礁&#xff0c;威胁着人们的生命财产安全。传统消防管理模式在现代社会的复杂环境下&#xff0c;逐渐显露出诸多弊端。内部管理分散混乱&#xff0c;人员、装备、物资管理缺乏统一标准和高效流程&#xff1b;外部监管困难重重…

【Matlab】-- 基于MATLAB的美赛常用多种算法

文章目录 文章目录 01 内容概要02 各种算法基本原理03 部分代码04 代码下载 01 内容概要 本资料集合了多种数学建模和优化算法的常用代码资源&#xff0c;旨在为参与美国大学生数学建模竞赛&#xff08;MCM/ICM&#xff0c;简称美赛&#xff09;的参赛者提供实用的编程工具和…

机器学习课程

前言 课程代码和数据文件&#xff1a; 一、机器学习概述 1.1.人工智能概述 机器学习和人工智能&#xff0c;深度学习的关系 机器学习是人工智能的一个实现途径深度学习是机器学习的一个方法发展而来 达特茅斯会议-人工智能的起点 1956年8月&#xff0c;在美国汉诺斯小镇宁静…

AIGC(生成式AI)试用 28 -- 跟着清华教程学习 - AIGC发展研究 3.0

目标&#xff1a;继续学习 - 信息不对称、不平等、隐私泄露和数据滥用 - 问、改、创、优 - “概率预测&#xff08;快速反应&#xff09;”模型和“链式推理&#xff08;慢速思考&#xff09;”模型 - 思维滞环现象解决思路&#xff1a;1.调整提问&#xff1a;改变问题方式&…

问题:md文档转换word,html,图片,excel,csv

文章目录 问题&#xff1a;md文档转换word&#xff0c;html&#xff0c;图片&#xff0c;excel&#xff0c;csv&#xff0c;ppt**主要职责****技能要求****发展方向****学习建议****薪资水平** 方案一&#xff1a;AI Markdown内容转换工具打开网站md文档转换wordmd文档转换pdfm…

【Java】面向对象之static

用static关键字修饰成员变量 有static修饰成员变量&#xff0c;说明这个成员变量是属于类的&#xff0c;这个成员变量称为类变量或者静态成员变量。 直接用 类名访问即可。因为类只有一个&#xff0c;所以静态成员变量在内存区域中也只存在一份。所有的对象都可以共享这个变量…

Anaconda安装-Ubuntu-Linux

1、进入Anaconda官网&#xff0c;以下载最新版本&#xff0c;根据自己的操作系统选择适配的版本。 2、跳过注册&#xff1a; 3、选择适配的版本&#xff1a; 4、cd ~/anaconda_download 5、bash Anaconda3-2024.10-1-Linux-x86_64.sh 6、按Enter或PgDn键滚动查看协议&…

Linux 配置NFS服务器

1. 开放/nfs/shared目录&#xff0c;供所有用户查阅资料 服务端 &#xff08;1&#xff09;安装nfs服务&#xff0c;nfs-utils包中包含rpcbind&#xff08;rpc守护进程&#xff09; [rootnode1-server ~]# yum install -y nfs-utils # nfs-utils包中包含rpcbind [rootnode…

塔能科技:用精准节能撬动社会效益的行业杠杆

在全球积极践行可持续发展理念的当下&#xff0c;能源高效利用与节能减排&#xff0c;已然成为各行各业实现高质量发展绕不开的关键命题。对企业来说&#xff0c;节能早已不是一道可做可不做的选择题&#xff0c;而是关乎生存与发展、社会责任与竞争力的必答题。塔能科技推出的…

Java 大视界 -- Java 大数据在自动驾驶高精度地图数据更新与优化中的技术应用(157)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

nginx https配置

一.https配置 HTTPS 协议是由HTTP 加上TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议&#xff0c;主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密&#xff0c;实现互联网传输安全保护。 1.生成证书 openssl genrsa -des3 -out server.key 20…

每日一题洛谷P10901 [蓝桥杯 2024 省 C] 封闭图形个数c++

排序思想&#xff0c;只不过这时的排序与之前的略有不同&#xff0c;com函数中要先比较封闭图形再比较真实的大小&#xff0c;多了一步&#xff0c;但是原理还是一样的 #include<iostream> #include<algorithm> #include<vector> using namespace std; //统…

天锐蓝盾终端安全防护——企业终端设备安全管控

从办公室的台式电脑到员工手中的移动终端&#xff0c;这些设备不仅是工作的得力助手&#xff0c;更是企业数据的重要载体。然而&#xff0c;随着终端设备的广泛使用&#xff0c;安全风险也如影随形。硬件设备使用不当、数据随意传输等问题频发&#xff0c;使得企业数据面临着泄…

3.27学习总结 爬虫+二维数组+Object类常用方法

高精度&#xff1a; 一个很大的整数&#xff0c;以字符串的形式进行接收&#xff0c;并将每一位数存储在数组内&#xff0c;例如100&#xff0c;即存储为[1][0][0]。 p2437蜜蜂路线 每一个的路线数前两个数的路线数相加。 #include <stdio.h> int a[1005][1005]; int …