版本
k8s版本:1.19.3
macos版本:10.15.2
目标:
使用StorageClass资源自动创建pv挂载卷
创建nfs服务(如果没有)
$ sudo vi /etc/exports
/Users/xyz/pv/data/ -alldirs -maproot=root:wheel -network=192.168.0.0 -mask=255.255.0.0
说明:
- /Users/xyz/pv/data/ 指定共享目录
- -alldirs 共享目录下的所有目录
- -maproot 把client端的root用户映射为Mac OS上的root,client端的root组映射为Mac OS上的wheel (gid=0) 组- -network -mask 指定本工作网段,子网掩码
注意:修改nfs.cnf配置文件,不然k8s挂载nfs时会报错
查看网络偏好设置获取ip地址
$ sudo vi /etc/nfs.conf
nfs.server.mount.require_resv_port = 0
# 服务命令
sudo nfsd checkexports
sudo nfsd enable
sudo nfsd disable
sudo nfsd start
sudo nfsd stop
sudo nfsd restart
sudo nfsd status
showmount -e 192.168.0.10
安装nfs-client
helm安装
helm upgrade -i nfs stable/nfs-client-provisioner --set nfs.server=192.168.0.10 --set nfs.path=/Users/xyz/pv/data
yaml安装
详见github https://github.com/kubernetes-retired/external-storage/tree/master/nfs-client
测试
通过创建PVC看看是否能够自动创建PV
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-ns-pvc
namespace: lens-metrics
annotations:
volume.beta.kubernetes.io/storage-class: "nfs-client" #与nfs-StorageClass.yaml metadata.name保持一致
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-pvc
annotations:
volume.beta.kubernetes.io/storage-class: "nfs-client" #与nfs-StorageClass.yaml metadata.name保持一致
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
如果没有意外,可以在看到两个pv被创建和绑定