当前位置: 首页 > news >正文

K8S学习之基础二十五:k8s存储类之storageclass

k8s存储类之StorageClass

​ k8s可以通过StorageClass,动态生成一个pv供k8s的pvc使用

​ 每个StorageClass都包含字段provisioner,parameters和reclaimPolicy

​ 具体来说,StorageClass定义一下两部分:

​ 1、PV属性,比如大小、类型等

​ 2、创建PV需要使用的存储插件,如Ceph、NFS等

image-20250312110241206

​ 以NFS为例,需要一个 nfs-client的自动装载程序,称之为provisioner,该程序会使用已经配置好的NFS服务器自动创建持久卷,也就是自动帮我们创建PV

​ raclimPolicy:回收策略,默认删除

​ 安装nfs provisioner,用于配合存储类动态生成pv,这里以pod模式运行

​ 将nfs-subdir-external-provisioner.tar.gz上传到harbor仓库

​ 创建sa,使pod可以操作k8s

vi servieaccount.yaml
serviceaccount.yaml 
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-provisioner

​ 对sa授权

kubectl create clusterrolebinding nfs-provisioner-clusterrolebinding --clusterrole=cluster-admin --serviceaccount=default:nfs-provisioner

​ 安装nfs-provisioner

# 创建目录
mkdir /data/nfs_pro -p
echo '/data/nfs_pro 172.16.80.131/24(rw,no_root_squash)' >> /etc/exports
exportfs -arv

​ 创建storageclass,动态供给pv

vi nfs-storageclass.yaml 
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs
provisioner: example.com/nfs

​ 创建pvc,绑定动态生成的pv

vi claim.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test-claim1
spec:
  accessModes: ["ReadWriteMany"]
  resources:
    requests:
      storage: 10Mi
  storageClassName: nfs

​ 创建pod客户端

vi nfs-deployment.yaml 
kind: Deployment
apiVersion: apps/v1
metadata:
  name: nfs-provisioner
spec:
  selector:
    matchLabels:
       app: nfs-provisioner
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: nfs-provisioner
    spec:
      serviceAccount: nfs-provisioner
      containers:
        - name: nfs-provisioner
          image: 172.16.80.140/nfs-subdir-external/nfs-subdir-external-provisioner:4.0.0
          imagePullPolicy: IfNotPresent
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: example.com/nfs
            - name: NFS_SERVER
              value: 172.16.80.131
            - name: NFS_PATH
              value: /data/nfs_pro/
      volumes:
        - name: nfs-client-root
          nfs:
            server: 172.16.80.131
            path: /data/nfs_pro/

image-20250312141113967

image-20250312141019228

相关文章:

  • 学习Android Audio 焦点记录
  • leetcode【面试经典150系列】(一)
  • Spring Boot集成HikariCP:原理剖析与实战指南
  • Flink-学习路线
  • DataWhale 大语言模型 - 语言模型发展历程
  • C++算法学习2:二分算法精讲
  • 在 Linux 系统中,区分**磁盘(物理/虚拟存储设备)和分区(磁盘的逻辑划分)
  • 阿里云爆发式的跨越
  • 高等数学-第七版-上册 选做记录 习题4-1
  • 搞定python之三----序列、字典及集合
  • 算法练习——双指针算法(更新中)
  • 【2025】基于springboot+vue的网络安全科普平台(源码、万字文档、图文修改、调试答疑)
  • OpenHarmony子系统开发 - 模块配置规则
  • 3.12-1 html讲解
  • 博客系统自动化测试
  • 20 | 如何添加单元测试用例
  • Hadoop 集群部署与配置详解
  • python-leetcode-K 和数对的最大数目
  • 基于Redis实现限流
  • 本地Git仓库搭建(DevStar)与Git基本命令
  • 网站开发人员工资/广州 关于进一步优化
  • 网站的建立与运营/技能培训机构排名前十
  • 做家装网站源码/百度灰色关键词排名推广
  • 什么网站做一手房比较好/接单平台app
  • 网站的备案号在哪/seo搜索优化是什么呢
  • 网站建设合同中英文模板/seo建站要求