美文网首页云原生
42-动态卷挂载

42-动态卷挂载

作者: 紫荆秋雪_文 | 来源:发表于2022-02-28 16:04 被阅读0次

    一、动态卷供应

    动态卷供应允许按需创建存储卷。如果没有动态供应,集群管理员必须手动的联系他们的云或存储供应商来创建新的存储卷,然后在 k8s集群创建 pv对象来表示这些卷。动态供应功能消除了集群管理员预先配置存储的需要。

    1、启用动态卷供应

    要启用动态供应功能,集群管理员需要为用户预先创建一个或多个StorageClass对象。StorageClass对象定义当动态供应被调用时,哪一个驱动将使用和哪些参数将被传递给驱动。以下清单创建了一个 StorageClass 存储类 "slow",它提供类似标准磁盘的永久磁盘

    • slow
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: slow
    provisioner: kubernetes.io/gce-pd
    parameters:
      type: pd-standard
    
    • 以下清单创建了一个 "fast" 存储类,它提供类似 SSD 的永久磁盘。
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: fast
    provisioner: kubernetes.io/gce-pd
    parameters:
      type: pd-ssd
    

    2、使用动态卷供应

    • PersistentVolumeClaim对象storageClassName 字段的值必须能够匹配到集群管理员配置的StorageClass对象的名称
    • 选择fast存储类,创建如下的 PersistentVolumeClaim
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: claim1
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: fast
      resources:
        requests:
          storage: 30Gi
    

    二、NFS动态供应

    1、创建StorageClass

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: nfs-client
    provisioner: nfs-provisioner # or choose another name, must match deployment's env PROVISIONER_NAME'
    parameters:
      archiveOnDelete: "false"
    
    • provisioner字段值必须要与deployment's文件中的PROVISIONER_NAME字段值相同 image.png

    2、deployment.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nfs-client-provisioner
      labels:
        app: nfs-client-provisioner
      # replace with namespace where provisioner is deployed
      namespace: raven
    spec:
      replicas: 1
      strategy:
        type: Recreate
      selector:
        matchLabels:
          app: nfs-client-provisioner
      template:
        metadata:
          labels:
            app: nfs-client-provisioner
        spec:
          serviceAccountName: nfs-client-provisioner
          containers:
            - name: nfs-client-provisioner
              image: registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/nfs-subdir-external-provisioner:v4.0.2
              volumeMounts:
                - name: nfs-client-root
                  mountPath: /persistentvolumes
              env:
                - name: PROVISIONER_NAME
                  value: nfs-provisioner
                - name: NFS_SERVER
                  value: 172.20.173.235  #NFS-Service 地址
                - name: NFS_PATH
                  value: /nfs/data
          volumes:
            - name: nfs-client-root
              nfs:
                server: 172.20.173.235  #NFS-Service 地址
                path: /nfs/data
    
    image.png

    3、RBAC

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: nfs-client-provisioner
      # replace with namespace where provisioner is deployed
      namespace: raven
    ---
    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: nfs-client-provisioner-runner
    rules:
      - apiGroups: [""]
        resources: ["nodes"]
        verbs: ["get", "list", "watch"]
      - apiGroups: [""]
        resources: ["persistentvolumes"]
        verbs: ["get", "list", "watch", "create", "delete"]
      - apiGroups: [""]
        resources: ["persistentvolumeclaims"]
        verbs: ["get", "list", "watch", "update"]
      - apiGroups: ["storage.k8s.io"]
        resources: ["storageclasses"]
        verbs: ["get", "list", "watch"]
      - apiGroups: [""]
        resources: ["events"]
        verbs: ["create", "update", "patch"]
    ---
    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: run-nfs-client-provisioner
    subjects:
      - kind: ServiceAccount
        name: nfs-client-provisioner
        # replace with namespace where provisioner is deployed
        namespace: raven
    roleRef:
      kind: ClusterRole
      name: nfs-client-provisioner-runner
      apiGroup: rbac.authorization.k8s.io
    ---
    kind: Role
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: leader-locking-nfs-client-provisioner
      # replace with namespace where provisioner is deployed
      namespace: raven
    rules:
      - apiGroups: [""]
        resources: ["endpoints"]
        verbs: ["get", "list", "watch", "create", "update", "patch"]
    ---
    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: leader-locking-nfs-client-provisioner
      # replace with namespace where provisioner is deployed
      namespace: raven
    subjects:
      - kind: ServiceAccount
        name: nfs-client-provisioner
        # replace with namespace where provisioner is deployed
        namespace: raven
    roleRef:
      kind: Role
      name: leader-locking-nfs-client-provisioner
      apiGroup: rbac.authorization.k8s.io
    

    4、persistentVolumeClaim.yaml

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: test-claim
      namespace: raven
    spec:
      storageClassName: nfs-client
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 1Mi
    
    pvc.png

    5、pod.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: "nfs-dny-pod"
      namespace: raven
      labels:
        app: "nfs-dny-pod"
    spec:
      containers:
      - name: nfs-dny-pod
        image: "nginx"
        ports:
        - containerPort:  80
          name:  http
        volumeMounts:
        - name: localtime
          mountPath: /etc/localtime
        - name: nfs-dny-pvc
          mountPath: "/nfs"
      volumes:
        - name: localtime
          hostPath:
            path: /usr/share/zoneinfo/Asia/Shanghai
        - name: nfs-dny-pvc
          persistentVolumeClaim:
            claimName: test-claim
      restartPolicy: Always
    
    image.png

    6、NFS-Service image.png

    7、访问pod image.png

    8、解绑Pod-PVC image.png

    9、解绑PVC image.png

    动态挂载PV卷自动删除.png

    小结 image.png

    相关文章

      网友评论

        本文标题:42-动态卷挂载

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