美文网首页
Kubernests YAML 详细之卷(PV、PVC、Stor

Kubernests YAML 详细之卷(PV、PVC、Stor

作者: 河码匠 | 来源:发表于2023-02-18 17:25 被阅读0次

    一、PersistentVolume YAML

    PersistentVolume(PV)是集群中已由管理员配置的一段网络存储

    kubectl explain pv
    
    字段 值类型 说明
    accessModes []string 访问模式

    ReadWriteOnce: 卷可以被同一个节点上资源以读写方式挂载。(list 中简称 RWX)
    ReadOnlyMany: 卷可以被多个节点以只读方式挂载。(list 中简称 ROX)
    ReadWriteMany: 卷可以被多个节点以读写方式挂载。(list 中简称 RWX)
    ReadWriteOncePod: 卷可以被单个 Pod 以读写方式挂载。这只支持 CSI 卷以及需要 Kubernetes 1.22 以上版本。(list 中简称 RWOP)
    capacity map[string]string 设置存储容量
    storage: 容量大小(单位:Ki Mi Gi Ti Pi Ei),如:storage: 10Gi
    nfs Object nfs 网络存储

    * path: nfs 目录地址
    readOnly: 是否只读,默认 False
    * server: nfs 服务器地址
    persistentVolumeReclaimPolicy string 回收策略

    Delete: 删除 pv 后数据也删除 \color{red}{注意:}这里我试验的时候删除 pvc 和 pv 后 nfs 里面的数据没有被删除

    Retain: 默认 删除 pv 里面的 pvc 后 pv 状态为 released,pv 里面的数据不会被删除。重新创建 pvc 数据恢复。删除 pv 里面的数据也不会被删除
    cephfs Object
    csi Object
    glusterfs Object
    hostPath Object
    iscsi Object
    local Object
    rbd Object

    示例: 创建 pv

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-1
      labels:
        pv: pv1
    spec:
      accessModes:                  # 定义 pv 续写默认
      - "ReadWriteOnce"
      capacity:                     # 定义可使用的容量
        storage: 100Mi
      nfs:                          # 使用 nfs 定义 pv
        path: /root/nfs_data/data1  # nfs 文件地址
        server: fns_ip              # nfs 服务器 ip 地址
    

    二、PersistentVolumeClaim yaml

    PersistentVolumeClaim(PVC)是用户存储的请求

    kubectl explain pvc
    
    字段 值类型 说明
    accessModes []string 访问模式,\color{red}{注意:}必须和 PV 的访问模式相同

    ReadWriteOnce: 卷可以被同一个节点上资源以读写方式挂载。(list 中简称 RWX)
    ReadOnlyMany: 卷可以被多个节点以只读方式挂载。(list 中简称 ROX)
    ReadWriteMany: 卷可以被多个节点以读写方式挂载。(list 中简称 RWX)
    ReadWriteOncePod: 卷可以被单个 Pod 以读写方式挂载。这只支持 CSI 卷以及需要 Kubernetes 1.22 以上版本。(list 中简称 RWOP)
    dataSource Object
    dataSourceRef Object
    resources Object 资源限制

    limits: 限制最大可用资源
    requests: 最小的资源需求,节点资源不足这个限制,不会调度到该节点

    limitsrequests 限制的资源 storagecpumemory
    selector Object 便签选择器,选择要使用的 pv

    匹配方式:

    matchExpressions:表达式方式匹配 pod,参考上面示例有很多

    matchLabels:标签 pod 匹配 map[string]string 这个类型
    storageClassName string 存储类的名字,存储类的名字,关于存储类\color{red}{看}:\color{blue}{StorageClass YAML}
    volumeMode string
    volumeName string

    示例: 创建 pvc

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-1
    spec:
      accessModes:        # 定义访问模式,必须和 pv 的访问模式相同
      - "ReadWriteOnce"
      selector:           # 定义标签选择器
        matchLabels:
          pv: pv1         # 这是 pv 的标签
      resources:          # 资源限制
        requests:         # 限制最小可用资源
          storage: 100Mi  # 限制存储为 100Mi
    

    三、StorageClass YAML

    动态创建 pv。简写 sc

    kubectl explain sc
    
    字段 值类型 说明
    allowVolumeExpansion boolean 是否允许卷扩展,只扩不缩。扩展支持情况
    allowedTopologies []Object
    mountOptions []string
    parameters map[string]string 给供应商提供的参数
    provisioner string 供应商,如: ceph、AzureFile 等
    reclaimPolicy string 回收策略,默认:delete
    volumeBindingMode string

    示例:

    示例是以 nfs 为例;k8s 部署 nfs provisioner

    创建 StorageClass

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: nfs
    provisioner: example.com/nfs   # 这里是你 nfs deployment 服务创建时候 PROVISIONER_NAME 的值
    

    使用 StorageClass 关联 nfs 服务创建 pvc。此时自动创建 pv 和 pvc

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: test-pvc1
    spec:
      accessModes:  ["ReadWriteMany"]
      resources:
        requests:
          storage: 1Gi                  # 存储资源请求大小
      storageClassName:  nfs            # 这里是 StorageClass.metadata.name 的值
    
    ---
    
    kind: Pod
    apiVersion: v1
    metadata:
      name: test-mount
    spec:
      containers:
      - name: test-mount
        image: nginx
        imagePullPolicy: IfNotPresent
        volumeMounts:
          - name: nfs-pvc               # 下面卷的名字
            mountPath: /usr/share/nginx/html
      restartPolicy: "Never"            # 重启策略
      volumes:
        - name: nfs-pvc                 # 创建的卷的名字
          persistentVolumeClaim:
            claimName: test-pvc1        # 这里是 pvc 的名字
    
    

    相关文章

      网友评论

          本文标题:Kubernests YAML 详细之卷(PV、PVC、Stor

          本文链接:https://www.haomeiwen.com/subject/vagmkdtx.html