动态pv需要两个组件
1、卷插件,k8s本身支持的动态pv创建不包含NFS,需要声明和安装一个外部插件
Provisioner 存储分配器,动态创建pv,然后根据pvc的请求自动绑定和使用
2、StorageClass,用来定义pv的属性,存储类型,大小,回收策略
使用NFS来实现动态pv,NFS支持的方式nfs-cli,Provisioner来适配nfs-client
nfs-client-Provisioner 卷插件
部署动态
1、在Harbor上部署
进入opt目录下
mkdir k8s
chmod 777 k8s
vim /etc/exports
/opt/k8s 20.0.0.0/24(rw,no_root_squash,sync)
systemctl restart rpcbind
systemctl restart nfs
在本机上测试
[root@k8s4 opt]# showmount -e
Export list for k8s4:
/opt/k8s 20.0.0.0/24
在节点上测试
[root@node02 ~]# showmount -e 20.0.0.73
Export list for 20.0.0.73:
/opt/k8s 20.0.0.0/24
2、在主节点上部署serviceAccount Nfs-privisioner storageclasses
部署serviceAccount
NFS PRovisioner是一个插件,没有权限是无法再集群当中获取k8s的消息,插件要有权限能够监听APIserver,获取getlist
rbac Role-based Access Control
定义角色在集群当中可以使用的权限
vim nfs-client-rbac.yaml
#定义角色
apiVersion: v1
kind: ServiceAccount
metadata:
name: nfs-client-provisioner
---
#定义角色的权限
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: nfs-client-provisioner-role
rules:
- apiGroups: [""]
#apiGroups定义了规则使用那个API的组,空字符"",直接使用API的核心组的资源
resources: ["persistentvolumes"]
verbs: ["get","list","watch","create","delete"]
#表示权限的动作
- apiGr