k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

k8s 持久卷使用相关记录,供后续研究参考。。。

  组成 PV ( PersistentVolume ) + PVC ( PersistentVolume ) + SC ( StorageClass ) + NFS

  k8s 持久卷挂载方案有多种,我这里使用的是 NFS 

  k8s 集群为 master + 2 node 自行搭建 使用 flannel 做网络插件,实现k8s集群内部通信

  IP:k8s-master: 192.168.1.230

    k8s-node01:192.168.1.231

    k8s-node02:192.168.1.232

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

一、NFS 搭建

  NFS 搭建很简单,自行百度

  需要创建对应网络共享目录,配置相应权限 

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

 

  创建完成后,即可通过k8s StorageClass 来创建存储卷绑定策略及指定相关存储卷插件类型

  注:需要在所有工作节点都安装NFS 不然会在 Deployment 中部署 replicas 多实例时报错。 通过命令 kubectl describe pods xxx  中查看 Events 事件中提示报错信息: NFS 服务器文件系统崩坏等信息。未截图

二、创建 SC 配置

 

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

  没办法,太懒了,C位是我的。下同

  其中 allowVolumeExpansion: true #是否允许扩容 这个字段是默认指定 true 不需手动添加

  启动:kubectl create -f bxy-nfs-StorageClass.yaml

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

 

  框起来的三个字段在上面 yaml 配置截图中有相关注释

 

 三、创建 PV 配置

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

 

 

   框起来的是指定了这个挂载卷的容量大小,我挂载的路径为 /bxy/nfsdata    

  spec.nfs.server 字段为 NFS 文件系统所在服务器的真实 IP 

  spec.storageClassName 字段对应 StorageClass 配置中的 metedata.name 字段

  spec.mountOptions 字段没搞太懂,此为官网中 NFS 相应挂载配置

  https://www.cnblogs.com/yanh0606/p/11269142.html  相关资料网站

  启动:kubectl create -f bxy-nfs-pv.yaml

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

 

   注意创建完 PV 后,会看到 Status 类型为 Available ,这是因为 PV 还没有和 PVC 绑定,当绑定成功后会自动改成 Bound 

四、创建 PVC 配置

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

 

  框起来的部分是请求的资源大小,我写的是 5G ,但实际绑定成功后会自动改变为 PV 中设置的容量大小 6G

  spec.selector.matchLabels 这个字段与 PV 中的 labels 字段匹配

  #pvc 通过 matchLabels和pv中的label匹配,来关联要使用的存储空间。

  #https://my.oschina.net/sskxyz/blog/3130131

  #表明此PVC希望使用Label:name: "bxy-pv-labels"的PV。

  #https://www.cnblogs.com/yanh0606/p/11269142.html

  启动:kubectl create -f bxy-nfs-pvc.taml

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

 

   注意框起来的部分,状态为 Bound 并且容量为 6G,而不是配置文件中请求的 5G 容量

  再次回过头来看下我们的 pv 状态

  未创建 PVC 之前状态:

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

 

   创建 PVC 后对比:

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

 

  在未创建 PVC 之前我的 PV 状态为 Available ,现在状态自动更改为 Bound,说明已经自动绑定成功,并且 CLAIM 中添加了 PVC namespace/name

  最后,我们启动一个 NG 来,检验下是否能成功挂载此卷。

五、创建 Deployment 配置

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

 

  框中的就是和刚创建的持久卷相关连部分,没啥好解释的,注释基本都写了,可能有部分不是很准确,自行在摸索吧。

  启动:kubectl create -f nginx-nfs-deploy.taml

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

 

  挂载很成功,没啥好说的,毕竟已经实验多次了。

  对了,这里没有 Port 相关的配置,会在下面写一个 Service 来做端口映射配置

  在看下具体的 Pod 吧。

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

 

  两个 NG 很健康

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

 

  这个是 Pod 的 Events ,可以看到这个 Pod 被调度到 k8s-node02 上面了,创建启动啥的都和正常,没啥毛病。

  下面就是让这个 NG 可以在外网能够访问。

六、创建 Service 配置

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

 

  spec.clusterIP 这个是我手动添加的,只要在 k8s flannel 网段类就可以了

  基本上都注释的很详细了,也不再说啥了。

  启动看看吧。

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

  没啥问题,访问下看看

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

 

   嗯,是访问到了,但是没有文件,这个我们在 挂载目录下添加个文件试试效果,顺便也能确认下我们的挂载卷是否生效了

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

 

  在访问下,看看效果。。。

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

 

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

  k8s 持久卷使用记录 ( PV + PVC + SC + NFS )

   三台服务器都能访问 NG ,这个就是 Service 中的配置效果。

  老铁,没毛病吧。

  

上一篇:hive笔记


下一篇:【高并发】如何设计一个支撑高并发大流量的系统?这次我将设计思路分享给大家!