• (2022版)一套教程搞定k8s安装到实战 | PV/PVC


    视频来源:B站《(2022版)最新、最全、最详细的KubernetesK8s)教程,从K8s安装到实战一套搞定》

    一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

    附上汇总贴:(2022版)一套教程搞定k8s安装到实战 | 汇总_COCOgsta的博客-CSDN博客


    Volume:NFS、CEPH、GFS

    PersistentVolume:NFS、CEPH、GFS

    K8s:Volume -> CEPH(管理员知道)。开发人员对volume不熟悉,因此引入了PV/PVC概念。

    PV:由k8s配置的存储,PV同样是集群的一类资源,yaml定义。

    PVC:对PV的申请,Persistent Volume Claim。

    PV文档:kubernetes.io/docs/concep…

    NFS类型的PV

    1. apiVersion: v1
    2. kind: PersistentVolume
    3. metadata:
    4. name: pv0003
    5. spec:
    6. capacity:
    7. storage: 5Gi
    8. volumeMode: Filesystem
    9. accessModes:
    10. - ReadWriteOnce
    11. persistentVolumeReclaimPolicy: Recycle
    12. storageClassName: slow
    13. mountOptions:
    14. - hard
    15. - nfsvers=4.1
    16. nfs:
    17. path: /tmp
    18. server: 172.17.0.2
    19. 复制代码
    • persistentVolumeReclaimPolicy:Recycle,回收,rm -rf。Deployment -> PVC -> PV,Recycle。Retain,保留。Delete,PVC -> PV,删除PVC后,PV也会被删掉,这一类的PV,需要支持删除的功能,动态存储默认方式。
    • capacity:PV的容量。
    • volumeMode:挂载的类型,Filesystem,block
    • accessModes:这个PV的访问模式。ReadWriteOnce,RWO,可以被单节点以读写的模式挂载。ReadWriteMany,RWX,可以被多节点以读写的形式挂载。ReadOnlyMany,ROX,可以被多个节点以只读的形式挂载。
    • storageClassName:PV的类,可以说是一个类名,PVC和PV的这个名字一样,才能被绑定。

    PV的状态:

    • Available:空闲的PV,没有被任何PVC绑定。
    • Bound:已经被PVC绑定
    • Released:PVC被删除,但是资源没有被释放
    • Failed:自动回收失败

    首选创建了一个NFS的PV,nfs-pv.yaml

    1. apiVersion: v1
    2. kind: PersistentVolume
    3. metadata:
    4. name: pv001
    5. spec:
    6. capacity:
    7. storage: 5Gi
    8. volumeMode: Filesystem
    9. accessModes:
    10. - ReadWriteMany
    11. persistentVolumeReclaimPolicy: Recycle
    12. storageClassName: nfs-slow
    13. mountOptions:
    14. - hard
    15. - nfsvers=4.1
    16. nfs:
    17. path: /data/k8s-data/testDir
    18. server: 192.168.1.22
    19. 复制代码

    创建一个PVC,test-pvc.yaml,绑定到指定类型的PV:

    1. apiVersion: v1
    2. kind: PersistentVolumeClaim
    3. metadata:
    4. name: myclaim
    5. spec:
    6. accessModes:
    7. - ReadWriteMany
    8. volumeMode: Filesystem
    9. resources:
    10. requests:
    11. storage: 2Gi
    12. storageClassName: nfs-slow
    13. 复制代码

    更改deployment使用PVC类型的volume

    1. volumeMounts:
    2. - mountPath: /tmp/pvc
    3. name: pvc-test
    4. volumes:
    5. - name: pvc-test
    6. persistentVolumeClaim:
    7. claimName: myclaim # PVC的名称
    8. 复制代码

    很多情况下:

    创建PVC之后,一直绑定不上PV(Pending):

    1. PVC的空间申请大小大于PV的大小
    1. PVC的StorageClassName没有和PV的一致
    1. PVC的accessModes和PV的不一致

    创建挂载了PVC的Pod之后,一直处于Pending的状态:

    1. PVC没有被创建成功,或者被创建
    1. PVC和Pod不在同一个Namespace

    删除PVC后,k8s会创建一个用于回收的Pod,根据PV的回收策略进行PV的回收,回收完后PV的状态就会变成可被绑定的状态也就是空闲状态,其他的Pending状态的PVC如果匹配到了这个PV,他就能和这个PV进行绑定。

  • 相关阅读:
    神经网络训练准确率不变,神经网络越训练越差
    linux 打开相机工具cheese/guvcview
    springboot基础(17):热部署
    EN 438-7建筑覆盖物装饰用层压板材产品—CE认证
    Day08-面向对象
    探索编译软件栈新范式;高端GPU禁售的影响;陈天奇DL系统免费课程|AI系统前沿动态
    常见的linux命令
    Redis从基础到进阶篇(四)----性能调优、分布式锁与缓存问题
    TensorFlow实战教程(三十二)-Transformer的商品评论情感分析 机器学习和深度学习的Baseline模型实现
    Remmina Linux 远程桌面(堡垒机)解决方案,含文件互传
  • 原文地址:https://blog.csdn.net/guolianggsta/article/details/126497171