kubernetes 实战 使用 nfs 作为动态 storageClass 存储
概述
之前有介绍过 Kubernetes 实战 pv and pvc, 相信使用过的pv和pvc的同学或者有过虚拟化经验的人来说肯定会想到很多问题,比如每次申请 pvc 都需要手动添加pv,这岂不是太不方便了。那我们如何实现类似于公有云或者私有云的共享存储模式呢?kubernetes 提供了 storageclass 的概念,接下来我们来一探究竟。
本文通过 nfs 来讲解,首先需要注意的是 nfs默认不支持动态存储,使用了第三方的NFS插件 external-storage, kubernetes
官网也有会叫详细的解析。

先上一张图大家就比较清楚了:

基础环境
nfs 存储
pv、pvc 的基础
kubernetes 集群
操作步骤
保证基础环境部分就绪

1. 准备
clone external-storage

git clone https://github.com/kubernetes-incubator/external-storage.git

部署 rbac

cd external-storage/nfs-client/deploy
kubectl apply -f rbac.yaml
1
2
2. 部署 nfs client 插件
修改deployment.yml配置, 修改 nfs 配置信息。

spec:
      serviceAccountName: nfs-client-provisioner
      containers:
        - name: nfs-client-provisioner
          image: quay.io/external_storage/nfs-client-provisioner:latest
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: fuseim.pri/ifs
            - name: NFS_SERVER
              value: 192.168.8.220 # nfs 服务器ip
            - name: NFS_PATH 
              value: /root/work/storage/nfs # 存储地址
      volumes:
        - name: nfs-client-root
          nfs:
            server: 192.168.8.220  # nfs 服务器ip 
            path: /root/work/storage/nfs  # 存储地址

创建客户端

kubectl apply -f deployment.yaml

创建storage class

kubectl apply -f class.yaml

查看 nfs 客户端 和 storage class:

客户端
[root@node3 deploy]# kubectl  get pod
NAME                                      READY   STATUS    RESTARTS   AGE
nfs-client-provisioner-7695c66c6b-56sbw   1/1     Running   0          10m

storage class
[root@node3 deploy]# kubectl  get sc
NAME                  PROVISIONER      AGE
managed-nfs-storage   fuseim.pri/ifs   10m

3. 创建pvc
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test-claim
  annotations:
    volume.beta.kubernetes.io/storage-class: "managed-nfs-storage"
spec:
  accessModes: # 策略
    - ReadWriteMany
  resources: 
    requests:
      storage: 1Mi # 请求空间大小

创建

kubectl  apply -f test-claim.yaml

查看 pvc

[root@node3 deploy]# kubectl  get pvc
NAME         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS          AGE
test-claim   Bound    pvc-2febc25a-d2b0-11e9-9623-000c29b3776e   1Mi        RWX            managed-nfs-storage   14s

4. 部署测试pod
kind: Pod
apiVersion: v1
metadata:
  name: test-pod
spec:
  containers:
  - name: test-pod
    image: nginx
    command:
      - "/bin/sh"
    args:
      - "-c"
      - "touch /mnt/SUCCESS && exit 0 || exit 1"
    volumeMounts:
      - name: nfs-pvc # 绑定pvc
        mountPath: "/mnt"
  restartPolicy: "Never"
  volumes:
    - name: nfs-pvc #pvc 通过pvc 动态创建pv
      persistentVolumeClaim:
        claimName: test-claim

创建 测试 pod

kubectl  apply -f test-pod.yaml
1
查看pod

[root@node3 deploy]# kubectl  get pod | grep pod
test-pod                                  0/1     Completed   0          81s
1
2
查看 pv 是否动态创建:

[root@node3 deploy]# kubectl  get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                STORAGECLASS          REASON   AGE
pvc-e78d0817-d2b0-11e9-9623-000c29b3776e   1Mi        RWX            Delete           Bound    default/test-claim   managed-nfs-storage            22m
1
2
3
好了是不是用起来很方便,还有其他的很多存储可以测试自己搞一套试试。

github 地址

kubernetes 实战 使用 nfs 作为动态 storageClass 存储相关推荐

  1. 实战Kubernetes动态卷存储(NFS)

    之前的< Kubernetes持久卷实战两部曲>系列中,我们实战了先声明一个存储卷,再使用这个存储卷,这种方式要求每次都要提前申明存储,不是很方便,而动态卷存储不需要提前申明,而是使用时自 ...

  2. Kubernetes之PersistentVolumeClaim 静态与动态供给实现NFS网络存储(李作强)

    PersistentVolume 静态供给 网络存储 NFS是一种很早的技术,单机的存储在服务器方面还是非常主流的,但nfs唯一的就是缺点比较大就是没有集群版,做集群化还是比较费劲的,文件系统做不了, ...

  3. 【Kubernetes存储篇】StorageClass存储类动态生成PV详解

    文章目录 一.StorageClass存储类理论 二.案例:Storageclass存储类实战演示 1.搭建NFS服务端 2.搭建NFS供应商(provisioner) 3.创建StorageClas ...

  4. 使用nfs为k8s提供pv动态供给存储

    环境:k8s一主两从 k8s version: 1.20.2 k8s-master: 192.168.31.200 k8s-node1: 192.168.31.201 k8s-node2: 192.1 ...

  5. Kubernetes学习总结(15)—— Kubernetes 实战之部署 Mysql 集群

    前言 一般情况下 Kubernetes 可以通过 ReplicaSet 以一个 Pod 模板创建多个 pod 副本,但是它们都是无状态的,任何时候它们都可以被一个全新的 pod 替换.然而有状态的 p ...

  6. k8s——pv(静态+动态storageclass)与pvc

    k8s--pv(静态+动态storageclass)与pvc PVC和PV PV概念 PVC概念 PV与PVC之间的关系 两种PV的提供方式 基于nfs创建静态PV资源和PVC资源 配置nfs存储(1 ...

  7. 【云原生之kubernetes实战】在k8s集群下部署Weave Scope监控平台

    [云原生之kubernetes实战]在k8s集群下部署Weave Scope监控平台 一.Weave Scope介绍 1.Weave Scope简介 2.Weave Scope的特点 3.Weave ...

  8. 阿里云Kubernetes实战2–搭建基础服务

    前言: 在系列的第一篇文章中,我已经介绍过如何在阿里云基于kubeasz搭建K8S集群,通过在K8S上部署gitlab并暴露至集群外来演示服务部署与发现的流程.文章写于4月,忙碌了小半年后,我才有时间 ...

  9. Kubernetes - - k8s - v1.12.3 动态存储管理GlusterFS及使用Heketi扩容GlusterFS集群

    1,准备工作 1.1 所有节点安装GFS客户端 yum install glusterfs glusterfs-fuse -y 1.2 如果不是所有节点要部署GFS管理服务,就在需要部署的节点上打上标 ...

最新文章

  1. puppeteer爬虫的奇妙之旅
  2. ubunu16.04 TensorFlow object detection API 应用配置
  3. 微软(北京).NET俱乐部 2008雪上激情之旅-续
  4. unity 200.8m yoy_没错,Unity双十一来了
  5. 前端临床手扎——简单易用的fetch
  6. 深入分析线程池的实现原理
  7. 新手学测试----Unit Test(单元测试)
  8. 什么是node网站服务器,node.js
  9. 苹果第一财季营收1239亿美元 iPhone、Mac及服务营收均创下新高
  10. 在计算机软件中 CUI的中文意思是,长江大学 计算机基础11-12上A卷cui
  11. Atitit. Api 设计 原则 ---归一化
  12. 自制汉字字库,识别汉字(三)(汉字篇)
  13. WiFi通信字节乱码问题的产生原因及解决方法
  14. 新编计算机英语第二版,新编计算机英语-电子教案
  15. 豆芽的生长过程观察日记-绿豆发芽观察日记7天-2021年
  16. 使用超级用户登录系统linux,登录和退出Linux系统
  17. 【成神之路】多线程并发相关面试题
  18. 麦克风阵列定位matlab算法,基于麦克风阵列的MUSIC声源定位算法研究
  19. 大道争锋手游如何在电脑上玩 大道争锋手游拟器教程
  20. CAD在线转换PDF格式怎么操作?

热门文章

  1. Cheerleaders【容斥】
  2. 教你如何把自己从好友的QQ中删除
  3. 教程 | 如何利用C++搭建个人专属的TensorFlow
  4. thinkphp单入口和多入口的访问方法
  5. 转:VMware安装Mac OS X Mavericks系统图文教程
  6. discusz 判断当前页是门户还是论坛
  7. 查看游戏服务器ip地址网站,如何查看游戏服务器IP地址
  8. php页面底部信息居中,css底部如何局中?css三种居中方法
  9. Lock的lock()方法
  10. python中mako中loop_python中Mako库实例用法