0%

k8s动态分配存储【helm安装nfs-client】

前文:在所有节点安装nfs-utils并启动相关服务。

NFS服务端新建一个挂载目录

echo "/home/nfs *(rw,async,no_root_squash)" >> /etc/exports
exportfs -r
showmount -e localhost

安装nfs-client

helm install stable/nfs-client-provisioner --name test-storageclass --set nfs.server=192.168.1.210 --set nfs.path=/home/nfs

注意

可以先用命令helm inspect values stable/nfs-client-provisioner查看所有配置项,并提前下载好镜像。

replicaCount: 1
strategyType: Recreate
 
image:
  repository: quay.io/external_storage/nfs-client-provisioner
  tag: v3.1.0-k8s1.11
  pullPolicy: IfNotPresent
 
nfs:
  server:
  path: /ifs/kubernetes
  mountOptions:
 
# For creating the StorageClass automatically:
storageClass:
  create: true
 
  # Set a provisioner name. If unset, a name will be generated.
  # provisionerName:
 
  # Set StorageClass as the default StorageClass
  # Ignored if storageClass.create is false
  defaultClass: false
 
  # Set a StorageClass name
  # Ignored if storageClass.create is false
  name: nfs-client
 
  # Allow volume to be expanded dynamically
  allowVolumeExpansion: true
 
  # Method used to reclaim an obsoleted volume
  reclaimPolicy: Delete
 
  # When set to false your PVs will not be archived by the provisioner upon deletion of the PVC.
  archiveOnDelete: true
 
## For RBAC support:
rbac:
  # Specifies whether RBAC resources should be created
  create: true
 
# If true, create & use Pod Security Policy resources
# https://kubernetes.io/docs/concepts/policy/pod-security-policy/
podSecurityPolicy:
  enabled: false
 
## Set pod priorityClassName
# priorityClassName: ""
 
serviceAccount:
  # Specifies whether a ServiceAccount should be created
  create: true
 
  # The name of the ServiceAccount to use.
  # If not set and create is true, a name is generated using the fullname template
  name:
 
resources: {}
  # limits:
  #  cpu: 100m
  #  memory: 128Mi
  # requests:
  #  cpu: 100m
  #  memory: 128Mi

也可以修改下上面的yaml,直接通过nfs-client.yaml创建:

replicaCount: 1
strategyType: Recreate
 
image:
  repository: quay.io/external_storage/nfs-client-provisioner
  tag: v3.1.0-k8s1.11
  pullPolicy: IfNotPresent
 
nfs:
  server: 192.168.1.210
  path: /home/nfs
  mountOptions:
 
storageClass:
  create: true
  defaultClass: false
  name: nfs-client
  allowVolumeExpansion: true
  reclaimPolicy: Delete
  archiveOnDelete: true
 
rbac:
  create: true
 
podSecurityPolicy:
  enabled: false

执行安装命令:

helm install stable/nfs-client-provisioner -n test-storageclass -f nfs-client.yaml

创建PVC测试

创建test-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: testclaim
spec:
  storageClassName: "nfs-client"
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Mi
kubectl apply -f test-pvc.yaml

查看结果

[root@k8s-master home]# kubectl get sc
NAME         PROVISIONER                                              AGE
nfs-client   cluster.local/test-storageclass-nfs-client-provisioner   36m
[root@k8s-master home]# kubectl get pv,pvc
NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS        CLAIM                 STORAGECLASS    REASON   AGE
persistentvolume/pvc-d9bdfa45-6417-4ad9-bbf0-02301f928342   10Mi       RWX            Delete           Bound         default/testclaim     nfs-client               33m
 
NAME                              STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/testclaim   Bound    pvc-d9bdfa45-6417-4ad9-bbf0-02301f928342   10Mi       RWX            nfs-client     34m