1、先配置nfs
[root@k8s-master1 mesh]# yum -y install nfs-utils
2、在nfs节点创建对应共享目录:
[root@k8s-node2 ~]# mkdir /pvshare/mypv01
3、配置之nfs共享
[root@k8s-node2 mypv01]# cat /etc/exports
/pvshare *(rw,sync,no_root_squash)
/pvshare/mypv01 *(rw,sync,no_root_squash)
4、创建pv(master)
[root@k8s-master1 pvc]# cat mypv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv001 #pv的名称,可以根据项目来定,最好项目要多少给多少。
labels: #pv的标签,这个何有必要,用于绑定pvc的
pv: nfs-pv
spec:
capacity:
storage: 2Gi #pv申请的空间大小
accessModes:
- ReadWriteMany #PV 的访问模式(accessModes)有三种:1、 ReadWriteOnce(RWO):是最基本的方式,可读可写,但只支持被单个 Pod 挂载。 ·2、ReadOnlyMany(ROX):可以以只读的方式被多个 Pod 挂载。 ·3、ReadWriteMany(RWX):这种存储可以以读写的方式被多个 Pod 共享。
storageClassName: nfs #storageClassName: nfs(如果不配置的话,可以自动的去匹配)。此配置用于绑定PVC和PV。这表明这个PVC希望使用storageClassName=nfs的PV。
nfs:
path: /pvshare/mypv01 #nfs共享出来的路径
server: 192.168.28.130 #nfs共享服务器的地址
5、创建pvc
[root@k8s-master1 pvc]# cat mypvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myclaim
labels: #pvc的标签是app=wordpress
app: wordpress
spec:
accessModes:
- ReadWriteMany #PV 的访问模式(accessModes)有三种:1、 ReadWriteOnce(RWO):是最基本的方式,可读可写,但只支持被单个 Pod 挂载。 ·2、ReadOnlyMany(ROX):可以以只读的方式被多个 Pod 挂载。 ·3、ReadWriteMany(RWX):这种存储可以以读写的方式被多个 Pod 共享。
resources:
requests:
storage: 1Gi
storageClassName: nfs #storageClassName: nfs(如果不配置的话,可以自动的去匹配)。此配置用于绑定PVC和PV。这表明这个PVC希望使用storageClassName=nfs的PV。
selector: #标签选择器:这里主要是和pv链接起来。
matchLabels:
pv: nfs-pv
6、建一个pod进行测试
[root@k8s-master1 pvc]# cat pvnginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
run: pvnginx
name: pvnginx
spec:
replicas: 1
selector:
matchLabels:
run: pvnginx
template:
metadata:
creationTimestamp: null
labels:
run: pvnginx
spec:
containers:
- image: nginx
name: pvnginx
resources:
limits:
cpu: "1"
memory: 512Mi
volumeMounts:
- mountPath: /usr/share/nginx/html
name: http-volume
volumes:
- name: http-volume
persistentVolumeClaim:
claimName: myclaim
将index.html文件写道对应文件夹下面即可验证。