CloudNative: nfs - x893675/note GitHub Wiki

NFS-StorageClass搭建

安装nfs server

  1. yum install nfs-utils
  2. mkdir -p /nfs/data
  3. chmod -R 777 /nfs/data
    1. 若挂载磁盘的话执行:
      1. mkfs.xfs /dev/sdb
      2. mount /dev/sdb /nfs/data
      3. echo "/dev/sdb /nfs/data xfs defaults 0 0" >> /etc/fstab
  4. echo "/nfs/data *(rw,no_root_squash,sync)" > /etc/exports
  5. exportfs -r
  6. systemctl enable nfs --now

安装k8s storage class

  1. kubectl apply -f https://raw.githubusercontent.com/kubernetes-incubator/external-storage/master/nfs-client/deploy/rbac.yaml

  2. 部署nfs-client-provisioner

    # 修改${NODE_IP}, 执行kubectl apply -f xx
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nfs-client-provisioner
      labels:
        app: nfs-client-provisioner
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nfs-client-provisioner
      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: quay.io/external_storage/nfs-client-provisioner:latest
              volumeMounts:
                - name: nfs-client-root
                  mountPath: /persistentvolumes
              env:
                - name: PROVISIONER_NAME
                  value: fuseim.pri/ifs
                - name: NFS_SERVER
                  value: ${NODE_IP}
                - name: NFS_PATH
                  value: /nfs/data
          volumes:
            - name: nfs-client-root
              nfs:
                server: ${NODE_IP}
                path: /nfs/data
    
  3. 创建storage class

    #执行kubectl apply -f xx
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: nfs
    provisioner: fuseim.pri/ifs
    parameters:
      archiveOnDelete: "false"
    reclaimPolicy: Delete
    
  4. 设置nfs为默认sc: kubectl patch storageclass nfs -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'