前文:在所有节点安装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