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/
相关推荐
Chef_Chen几秒前
从0开始学习R语言--Day20-ARIMA与格兰杰因果检验
开发语言·学习·r语言
凌辰揽月36 分钟前
Web后端基础(基础知识)
java·开发语言·前端·数据库·学习·算法
whoarethenext2 小时前
C++ OpenCV 学习路线图
c++·opencv·学习
恰薯条的屑海鸥2 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十四期-XXE模块)
网络·学习·安全·web安全·渗透测试
有个傻瓜2 小时前
PHP语言核心技术全景解析
开发语言·kubernetes·php
Lester_11012 小时前
嵌入式学习笔记 - freeRTOS vTaskPlaceOnEventList()函数解析
笔记·学习
幻灭行度3 小时前
CKA考试知识点分享(2)---ingress
kubernetes
moxiaoran57534 小时前
uni-app学习笔记二十三--交互反馈showToast用法
笔记·学习·uni-app
AWS官方合作商6 小时前
在CSDN发布AWS Proton解决方案:实现云原生应用的标准化部署
java·云原生·aws
恰薯条的屑海鸥11 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十六期-SSRF模块)
数据库·学习·安全·web安全·渗透测试·网络安全学习