• kubernetes之NFS动态提供Kubernetes后端存储卷


    StorageClass作为对存储资源的抽象定义, 对用户设置的NFS申请屏蔽后端存储的细节, 一方面减少了用户对于存储资源细节的关注, 另一方面减轻了管理员手工管理pv的工作, 由系统自动完成pv的创建和绑定
    StorageClass本身是一种资源对象, 不提供pv的创建, 这里以NFS共享存储为例, 使用nfs-client-provisioner组件连接nfs服务器以及pv的创建

    案例

    1.安装nfs服务:省略
    2.克隆nfs-client-provisioner组件代码

    git clone https://github.com/kubernetes-incubator/external-storage.git
    cd external-storage/nfs-client/deploy
    

    3.修改deployment文件, 主要修改nfs服务器地址和nfs提供的目录

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: nfs-client-provisioner
    ---
    kind: Deployment
    apiVersion: extensions/v1beta1
    metadata:
      name: nfs-client-provisioner
    spec:
      replicas: 1
      strategy:
        type: Recreate
      template:
        metadata:
          labels:
            app: nfs-client-provisioner
        spec:
          serviceAccountName: nfs-client-provisioner
          containers:
            - name: nfs-client-provisioner
              image: registry.cn-hangzhou.aliyuncs.com/wangfang-dev/nfs-client-provisioner:latest
              volumeMounts:
                - name: nfs-client-root
                  mountPath: /persistentvolumes
              env:
                - name: PROVISIONER_NAME
                  value: fuseim.pri/ifs
                - name: NFS_SERVER
                  value: 192.168.1.48
                - name: NFS_PATH
                  value: /data/nfs
          volumes:
            - name: nfs-client-root
              nfs:
                server: 192.168.1.48
                path: /data/nfs
    

    4.StorageClass
    此处可以不修改,或者修改provisioner的名字,需要与上面的deployment的PROVISIONER_NAME名字一致。
    cat class.yaml

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: default
    provisioner: fuseim.pri/ifs
    

    5.应用创建

    kubectl apply -f deployment.yaml 
    kubectl apply -f class.yaml 
    kubectl apply -f rbac.yaml
    


    7.创建pvc和deployment资源

    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: nginx-deployment-pvc
      annotations:
        volume.beta.kubernetes.io/storage-class: "managed-nfs-storage"
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 10Mi
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      namespace: default 
      labels:
        app: nginx
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 1 
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.12
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 80
            volumeMounts:
            - name: html 
              mountPath: /usr/share/nginx/html 
          volumes:
          - name: html 
            persistentVolumeClaim: 
              claimName: nginx-deployment-pvc
    

    8.验证
    自动创建pv

    PV以 ${namespace}-${pvcName}-${pvName}的命名格式提供(在NFS服务器上)
    PV回收的时候以 archieved-${namespace}-${pvcName}-${pvName} 的命名格式(在NFS服务器上)

  • 相关阅读:
    概念理解及常用方法
    WeX5触发事件
    前端页面问题小结
    高性能 CSS3 动画
    IScroll5中文API整理,用法与参考
    关于浏览器兼容之mate标签
    HTMl5的sessionStorage和localStorage
    web app iphone4 iphone5 iphone6 响应式布局 适配代码
    Javascript模板引擎分享
    css3 media媒体查询器用法总结
  • 原文地址:https://www.cnblogs.com/lovelinux199075/p/11268414.html
Copyright © 2020-2023  润新知