Kubernetes详解(三十八)——NFS对PVC和PV使用实战

今天继续给大家介绍Linux运维相关知识,本文主要内容是Kubernetes NFS对PVC和PV使用实战。

一、实战说明

我们以NFS为存储方式,创建5个PV,然后再创建一个Pod,给该Pod使用PVC,使得PVC动态的选择PV进行挂载。本次实战架构如下:
在这里插入图片描述
注意,在上图中,我们并没有规定Pod的PVC究竟选择哪个PV,但是根据PVC的选择原则,其余的PV均不符合规定,因此该PVC必然会选择PV3。

二、NFS存储配置

要利用NFS实现Kubernetes集群的PV和PVC存储,那么我们首先要配置NFS。NFS的相关配置请参考文章:NFS配置实战。在这里就不过多赘述了。
最终,我们创建了v1——v5一共5个目录,作为这5个PV的挂载目录,如下所示:
在这里插入图片描述
同时,/etc/exports文件配置如下所示:
在这里插入图片描述
NFS服务开启情况如下:
在这里插入图片描述
我们在其他设备上尝试挂载该NFS,发现可以成功挂载,如下所示:
在这里插入图片描述

二、PV定义与创建

在完成NFS服务的相关配置后,接下来我们就可以开始进行PV的定义和创建了。
首先,我们创建PV的资源清单配置文件pv.yaml,一个PV的资源配置清单设置如下:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv1
  labels:
    name: pv1
spec:
  nfs:
    path: /data/k8s/v1
    server: 192.168.136.13
  accessModes: ["ReadWriteMany","ReadWriteOnce"]
  capacity:
    storage: 1Gi

在上述配置中,spec字段中的nfs的path和server两个参数指定了NFS服务器和挂载目录,storage参数指定了该PV的存储空间大小,accessModes参数指定了该PV的权限。
在accessModes参数中,一共可以设置的权限有以下三种:
RWO(ReadWriteOnce): 单节点读写
RWX(ReadwriteMany): 多节点多读写
ROX(ReadOnlyMany): 单节点只读
我们可以按照本文第一章的PV相关要求,改动上述的名称、标签、权限和存储空间大小等设定,完成其他PV的资源配置清单。不同的PV资源配置清单之间使用三个短杠间隔,配置完成后的pv.yaml文件(部分)如下所示:
在这里插入图片描述
在完成资源配置清单文件的配置后,我们执行命令:

kubectl apply -f pv.yaml

来创建这5个PV,该命令执行结果如下所示:
在这里插入图片描述
从上图中,我们可以看到,5个PV都已经创建完成。
我们可以执行命令:

kubectl get pv

执行结果如下:
在这里插入图片描述
从上图中,我们可以简单的查看这5个PV的基本情况。

三、PVC和Pod的定义与创建

在完成PV的创建后,我们就可以创建PVC和Pod了。我们先来创建pvc-pod.yaml的PVC和Pod的资源清单配置文件。并且向文件中写入如下内容:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-exp
  namespace: default
spec:
  accessModes: ["ReadWriteMany"]
  resources:
    requests:
      storage: 2Gi
---
apiVersion: v1
kind: Pod
metadata:
  name: pod-with-nfs-pv
  namespace: default
spec:
  containers:
  - name: pv-exp
    image: ikubernetes/myapp:v1
    volumeMounts:
    - name: nfs-pv
      mountPath: /usr/share/nginx/html
  volumes:
  - name: nfs-pv
    persistentVolumeClaim:
      claimName: pvc-exp

完成配置后的资源配置清单文件如下所示:
在这里插入图片描述
在完成上述资源配置清单文件的创建后,我们执行命令:

kubectl apply -f pvc-pod.yaml

来创建PVC和Pod资源,该命令执行结果如下:
在这里插入图片描述
从上襦中可以看出,我们的PVC和Pod资源已经成功创建。
接下来,我们执行命令:

kubectl get pods
kubectl get pv

来分别查看Pods和PV资源情况,这两条命令执行结果如下:
在这里插入图片描述
在这里插入图片描述
注意,在上图中,我们的Pod已经成功的对pv3完成了绑定。

四、效果查看

最后,让我们来检验一下上述配置的效果。
首先,我们给PV3的NFS服务器内,添加一个index.html文件,然后向该文件内写入指定内容,如下所示:
在这里插入图片描述
之后,我们先查看该Pod的IP地址,然后使用curl命令访问该IP地址,结果如下:
在这里插入图片描述
从上图中可以看出,我们对该Pod资源的访问结果正是我们写入NFS服务器中的内容。
之后,我们删除该Pod资源,然后再来查看我们的PV挂载情况,如下所示:
在这里插入图片描述
从上图中可以看出,我们的Pod被删除后,我们的PVC资源也会被随之释放。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

猜你喜欢

转载自blog.csdn.net/weixin_40228200/article/details/124428740