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文件写道对应文件夹下面即可验证。