Kubernetes 引入了 PV 和 PVC 两个重要的资源对象来实现对存储管理。
PV 的全称是:PersistentVolume(持久化卷),是对底层的共享存储的一种抽象,PV 由管理员进行创建和配置,它和具体的底层的共享存储技术的实现方式有关,比如 Ceph、GlusterFS、NFS 等,都是通过插件机制完成与共享存储的对接。

1、下载配置nfs

 yum -y install nfs-utils rpcbind
[root@k8s-node1 k8s]# chmod 755 /data/k8s/

vi /etc/exports
/data/k8s  *(rw,sync,no_root_squash)

2、开启rpcbind服务

[root@k8s-node1 k8s]# systemctl start rpcbind.service
[root@k8s-node1 k8s]# systemctl enable rpcbind                                                                                                            
Created symlink from /etc/systemd/system/multi-user.target.wants/rpcbind.service to /usr/lib/systemd/system/rpcbind.service.                              
[root@k8s-node1 k8s]# systemctl status rpcbind                                                                                                            
● rpcbind.service - RPC bind service                                                                                                                      
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)                                                              
   Active: active (running) since 四 2019-09-12 15:24:26 CST; 24s ago                                                                                     
 Main PID: 40295 (rpcbind)                                                                                                                                
   CGroup: /system.slice/rpcbind.service                                                                                                                  
           └─40295 /sbin/rpcbind -w                                                                                                                       
                                                                                                                                                          
9月 12 15:24:26 k8s-node1 systemd[1]: Starting RPC bind service...                                                                                        
9月 12 15:24:26 k8s-node1 systemd[1]: Started RPC bind service.   

3、启动nfs

[root@k8s-node1 k8s]# systemctl start nfs.service
[root@k8s-node1 k8s]# systemctl enable nfs.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@k8s-node1 k8s]# systemctl status nfs
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
  Drop-In: /run/systemd/generator/nfs-server.service.d
           └─order-with-mounts.conf
   Active: active (exited) since 四 2019-09-12 15:27:33 CST; 13s ago
 Main PID: 41860 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/nfs-server.service

9月 12 15:27:32 k8s-node1 systemd[1]: Starting NFS server and services...
9月 12 15:27:33 k8s-node1 systemd[1]: Started NFS server and services.

4、在客户端机器与服务端一样部署nfs

查看共享目录

[root@k8s-node2 data]# showmount -e 192.168.100.87
Export list for 192.168.100.87:
/data/k8s *

客户端创建目录并挂载到共享目录

[root@k8s-node2 data]# mkdir -p /root/course/kubeadm/data
[root@k8s-node2 data]# mount -t nfs 192.168.100.87:/data/k8s /root/course/kubeadm/data

在客户端创建一个文件

[root@k8s-node2 data]# touch /root/course/kubeadm/data/test.aaa

服务端去/data/k8s查看

[root@k8s-node1 k8s]# cd /data/k8s
[root@k8s-node1 k8s]# ll
总用量 0
-rw-r--r-- 1 root root 0 9月  12 17:37 test.aaa

5、构建pv

apiVersion: v1
kind: PersistentVolume
metadata:
  name:  pv1
spec:
  capacity: 
    storage: 1Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    path: /data/k8s
    server: 192.168.100.87
kubectl apply -f pv-demo.yaml
[root@k8s-node1 k8s]# kubectl get pv
NAME    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM               STORAGECLASS   REASON   AGE                                            
pv001   1Gi        RWO            Recycle          Bound       default/www-web-1                           4d23h                                          
pv002   1Gi        RWO            Recycle          Bound       default/www-web-0                           4d23h                                          
pv1     1Gi        RWO            Recycle          Available                                               5s          

6、解决pv无法删除,一直显示terminating状态

kubectl patch pv 你的pv名字 -p ‘{"metadata":{"finalizers":null}}‘
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐