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

k8s存储类之StorageClass

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

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

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

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

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

​ 以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/
相关推荐
朔北之忘 Clancy1 小时前
2026 年 3 月青少年软编等考 C 语言二级真题解析
c语言·开发语言·c++·学习·青少年编程·题解·考级
Upsy-Daisy1 小时前
IOTA 学习笔记(四):当前 IOTA 架构总览
笔记·学习·架构
小拉达不是臭老鼠2 小时前
Unity中的UI系统之UGUI
学习·ui·unity
ZzzZZzzzZZZzzzz…2 小时前
Docker + K8s集群搭建实战:1 Master+2 Node,含Harbor私有仓库与软路由
docker·云原生·容器·kubernetes·容器编排·集群部署·cri-dockerd
吃好睡好便好2 小时前
矩阵的转置运算
学习·线性代数·matlab·矩阵
爱上好庆祝2 小时前
学习JS第十三天
学习
xier_ran3 小时前
【infra之路】模块三:Kubernetes (下) — 阶段一毕业项目:在集群里跑 PyTorch 训练
pytorch·容器·kubernetes
Waay3 小时前
K8s新手实操|emptyDir卷超详细实战(附完整命令+核心理解)
云原生·容器·kubernetes
魔法阵维护师3 小时前
从零开发游戏需要学习的c#模块,第三十四章(设置界面)
学习·游戏·c#
liux35283 小时前
K8s 核心接口:CNI、CSI、CRI、LB 一篇讲透
云原生·容器·kubernetes