zoukankan      html  css  js  c++  java
  • k8s 储存卷的定义与使用

    认识PV/PVC/StorageClass

    **PersistentVolume(PV):**是集群中由管理员配置的一段网络存储。 它是集群中的资源,就像节点是集群资源一样。 PV是容量插件,如Volumes,但其生命周期独立于使用PV的任何单个pod。 此API对象捕获存储实现的详细信息,包括NFS,iSCSI或特定于云提供程序的存储系统。

    **PersistentVolumeClaim(PVC)**是由用户进行存储的请求。 它类似于pod。 Pod消耗节点资源,PVC消耗PV资源。Pod可以请求特定级别的资源(CPU和内存)。声明可以请求特定的大小和访问模式(例如,可以一次读/写或多次只读)。

    虽然PersistentVolumeClaims允许用户使用抽象存储资源,但是PersistentVolumes对于不同的问题,用户通常需要具有不同属性(例如性能)。群集管理员需要能够提供各种PersistentVolumes不同的方式,而不仅仅是大小和访问模式,而不会让用户了解这些卷的实现方式。对于这些需求,有StorageClass 资源。

    StorageClass为管理员提供了一种描述他们提供的存储的“类”的方法。 不同的类可能映射到服务质量级别,或备份策略,或者由群集管理员确定的任意策略。 Kubernetes本身对于什么类别代表是不言而喻的。 这个概念有时在其他存储系统中称为“配置文件”。

    创建PV  --  PV 的全称是:PersistentVolume(持久化卷)

    第一种: NFS 类型的储存卷PV

    (1)安装NFS:

        方法1: docker run -d --name nfs --privileged -v /some/where/fileshare:/nfsshare -e SHARED_DIRECTORY=/nfsshare -p 2049:2049 itsthenetwork/nfs-server-alpine:latest    (dockers环境)

       方法2:https://www.jianshu.com/p/f5d1e8594deb

    (2)创建PV:

          创建文件pv_nfs.yml

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: nfs-pv
    spec:
      capacity:
        storage: 200M
      accessModes:
        - ReadWriteMany
      nfs:
        server: 172.17.97.148
        path: "/"
    

        执行安装:kubectl apply -f  pv_nfs.yml

    第二种: LOCAL类型的储存卷PV:

      创建文件pv_local.yml

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-local
    spec:
      capacity:
        storage: 10Gi
                                     
      volumeMode: Filesystem
      accessModes:
      - ReadWriteOnce
      persistentVolumeReclaimPolicy: Delete
      storageClassName: local-storage
      local:
        path: /some/where/localpv
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
              - kind1-control-plane
              - kind1-worker
    

      执行安装:kubectl apply -f  pv_local.yml

    第三种: 直接在创建pod时,使用本地存储


     PV的使用:

    1.  创建PVC,创建文件 pvc_nfs.yml

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-nfs
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
         storage: 2Gi
    

      

    部署 pvc:kubectl apply -f pvc_nfs.yml

    2.使用PVC

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: nginx-pvc
    spec:
      replicas: 2
      template:
        metadata:
          labels:
            app: nginx-pvc
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: www
              mountPath: /usr/share/nginx/html
          volumes:
          - name: www
            persistentVolumeClaim:
              claimName: pvc-nfs
    
    ---
    
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-svc
      labels:
        app: nginx-svc
    spec:
      type: NodePort
      ports:
      - port: 80
        targetPort: web
        nodePort:30001
      selector:
        app: nginx-pvc
    

      

    参考资料:

     https://blog.csdn.net/qq_25611295/article/details/86065053?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

    https://blog.csdn.net/weixin_34391854/article/details/86085596?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

    鸡肉是我的最爱!
  • 相关阅读:
    Linux 编译kernel有关Kconfig文件详解
    STM32之DMA实例
    容器技术与docker
    老男孩Python全栈学习 S9 日常作业 010
    Centos 7 最小化Fastdfs安装部署
    老男孩Python全栈学习 S9 日常作业 009
    老男孩Python全栈学习 S9 日常作业 008
    service
    Spinner的用法
    控制led灯并显示自己的数值
  • 原文地址:https://www.cnblogs.com/laochiji/p/13859386.html
Copyright © 2011-2022 走看看