• Kubernetes 存储简介


    存储分类结构图

    半持久化存储

    1.EmptyDir

    EmptyDir是一个空目录,生命周期和所属的 Pod 是完全一致的,EmptyDir的用处是,可以在同一 Pod 内的不同容器之间共享工作过程中产生的文件,缺省情况下,EmptyDir 是使用主机磁盘进行存储的,也可以设置emptyDir.medium 字段的值为Memory,来提高运行速度,这种设置,对该卷的占用会消耗容器的内存份额。

    • 示例
       volumes:
       - name: cache-volume
         emptyDir: {}   #指定存储方式为emptydir
    

    2.HostPath

    映射node文件系统中的文件或者目录到pod里,相当于docker中的-v目录映射,只不过在k8s中的时候,pod会漂移,当pod漂移到其他node节点的时候,pod不会跨节点的去读取目录。所以说hostpath只能算一种半持久化的存储方式,如果 Pod 发生跨主机的重建,其内容就难保证了。

    • 示例
      volumes:
      - name: test-volume
        hostPath:
          # directory location on host
          path: /data            #node节点上的路径
          # this field is optional
          type: Directory   #path的属性,下面会介绍可选属性的值
    

    持久化存储

    POD与PVC,PV,之间的关系

    pod需要使用持久化存储时,需要跟pv去申请,然后pv查看自己有没有合适的存储空间卷,有合适的就与pvc进行绑定。pv与pvc是一一对应绑定的。

    pod使用pvc示例

      volumes:
        - name: html
          persistentVolumeClaim:    #指明使用pvc模式
            claimname: mypvc        #指明使用的pvc名称,下面我们需要建一个叫做mypvc的yaml资源
    
    • 使用yaml文件创建PVC
    apiVersion: v1
    kind: persisitentVolumeClaim
    metadata:
      name: mypvc
      namespace: default
    spec:
      accessmodes: ["ReadWriteMany"]   #一共有三种模式,下面会一一说明
      resources:      #指定资源说明
        requests:         #指定请求
          storage: 4Gi       #指定请求存储空间的大小
    
    • ReadWriteOnce – 该卷能够以读写模式被加载到一个节点上
    • ReadOnlyMany – 该卷能够以只读模式加载到多个节点上
    • ReadWriteMany – 该卷能够以读写模式被多个节点同时加载
    • 创建PV
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv01
      labels:
        name: pv01
    spec:
      accessModes: ["ReadWriteMany"]
      capacity:
        storage: 5Gi
    
      nfs:
        server: 192.168.115.6    
        path:  /home
    

    StorageClass-动态PVC

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: standard
    # 指定存储类的供应者
    provisioner: kubernetes.io/aws-ebs
    parameters:
      type: gp2
    # 指定回收策略
    reclaimPolicy: Retain
    mountOptions:
      - debug
    
  • 相关阅读:
    ssh用法及命令
    FFmpeg开发——深入理解pts,dts和timebase
    .Net Core服务诊断排查Dump抓取
    Django 简单示例
    Django 安装
    Django 视图 Views
    Django Cross Site Request Forgery
    Django 模板标签(变量 列表 字典)
    19 Python 3 Object Oriented
    Django 模型(与数据库交互)
  • 原文地址:https://www.cnblogs.com/Aaron-23/p/13164335.html
Copyright © 2020-2023  润新知