Kubernetes-使用helm部署动态存储卷
Kubernetes使用NFS共享存储的两种方式
- 静态持久卷,由管理员事先提供
- 动态持久卷,由存储类(Storage Class)动态供应
通过helm部署动态持久卷
- 准备NFS服务器,并在各NODE节点安装NFS客户端
# NFS服务器IP:10.250.101.85
root@CNSZ-K8S-NFS-SERVER:/data# exportfs -v
/data/web-data <world>(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
/data/xx <world>(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
/data/yy <world>(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
/data/zz <world>(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
/data <world>(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
----
# 安装NFS客户端,以ubuntu20.04为例,并测试挂载
apt update; apt install nfs-common -y
- 下载nfs-client-provisioner包
trnuser@k8s:~/helm$ helm search repo nfs-client-provisioner
NAME CHART VERSION APP VERSION DESCRIPTION
apphub/nfs-client-provisioner 1.2.8 3.1.0 nfs-client is an automatic provisioner that use...
trnuser@k8s:~/helm$ helm pull apphub/nfs-client-provisioner
- 修改valume.yaml,配置storageclass name以及nfs
# Default values for nfs-client-provisioner.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
strategyType: Recreate
image:
repository: registry.cn-hangzhou.aliyuncs.com/kubeapps/quay-nfs-client-provisioner
tag: v3.1.0-k8s1.11
pullPolicy: IfNotPresent
nfs:
server:
path: /data ## 共享目录
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 ## storageClass name
- 安装nfs-client-provisioner
helm install nfs-provisioner --set nfs.server=10.250.101.85 .
- 安装成功
trnuser@k8s:~/helm/nfs-client-provisioner$ kubectl get storageclasses.storage.k8s.io
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs-client cluster.local/nfs-provisioner-nfs-client-provisioner Delete Immediate true 26m
trnuser@k8s:~/helm/nfs-client-provisioner$
- 测试效果
创建pvc并指定storageClass Name,会自动创建pv,并绑定
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs2
labels:
app: nfs2
spec:
storageClassName: "nfs-client"
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Mi
trnuser@k8s:~/pod/pv$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
nfs-client Bound pvc-48c81989-1035-4757-8b28-5686cf80c345 10Mi RWX nfs-client 25m
nfs2 Bound pvc-756dee41-f868-4c43-a044-d5ad62b571a3 10Mi RWX nfs-client 25m
www-web-0 Bound pv1-1 1Gi RWO xx 23h
www-web-1 Bound pv2
- 存储端如下
root@CNSZ-K8S-NFS-SERVER:/data# ll /data/
total 4
drwxrwxrwx 8 root root 180 Mar 16 05:54 ./
drwxr-xr-x 21 root root 4096 Feb 26 10:17 ../
drwxrwxrwx 2 root root 6 Mar 16 05:54 service-nfs2-pvc-756dee41-f868-4c43-a044-d5ad62b571a3/
drwxrwxrwx 2 root root 6 Mar 16 05:53 service-nfs-client-pvc-48c81989-1035-4757-8b28-5686cf80c345/
drwxrwxrwx 2 root root 24 Mar 1 06:06 web-data/
drwxrwxrwx 2 root root 24 Mar 1 03:38 xx/
drwxrwxrwx 2 root root 34 Mar 15 07:12 yy/
drwxrwxrwx 2 root root 6 Feb 26 10:21 zz/

浙公网安备 33010602011771号