写点什么

K8S 的 StorageClass 实战 (NFS),java 程序设计任务驱动式教程

用户头像
极客good
关注
发布于: 刚刚

[](

)如何创建 StorageClass


把创建 StorageClass 要做的的事情理清楚:


  1. 创建 namespace,这里用 hello-storageclass(您也可以选用自己喜欢的);

  2. 创建 rbac:因为 StorageClass 有对应的 pod 要运行,每个 pod 都有自己的身份即 serviceaccount,而这个 serviceaccount 是和某个角色绑定的,所以要创建:serviceaccount、rule、rolebinding;

  3. 创建 provisioner,即关联 NFS 的工作类,负责给 PVC 提供存储资源,这里用的是 nfs-client-provisioner;

  4. 创建 StorageClass,所有需要 PVC 通过该 StorageClass 即可获得存储空间;


接下来请 SSH 登录 kubernetes 环境,按照上述步骤操作;

[](

)创建 StorageClass


  1. 创建 namespace:kubectl create namespace hello-storageclass

  2. 创建 rbac 的脚本直接从我的 github 下载吧,地址:https://raw.githubusercontent.com/zq2599/blog_demos/master/storageclass-demo/rbac.yaml

  3. 下载的 rbac.yaml 文件中,namespace 是 kafka-test,现在要替换成 hello-storages,执行命令替换:sed -i ‘s/kafka-test/hello-storageclass/’ rbac.yaml

  4. 创建 rbac:kubectl apply -f rbac.yaml

  5. 创建 provisioner 的脚本也从我的 github 下载,地址:https://raw.githubusercontent.com/zq2599/blog_demos/master/storageclass-demo/deployment.yaml

  6. 下载的 deployment.yaml 文件中,namespace 是 kafka-test,现在要替换成 hello-storages,执行命令替换:sed -i ‘s/kafka-test/hello-storageclass/’ deployment.yaml

  7. 打开 deployment.yaml,设置 NFS 参数,修改下图红框的四个参数,红框 1 和 3 都是 NFS server 地址,红框 2 和 4 都是 NFS 分配的文件夹目录,请您按照实际的 NFS 资源来设置:



  1. 创建 provisioner:kubectl apply -f deployment.yaml

  2. 强烈建议用 kubectl describe pod xxxxxx -n hello-storageclass 和 kubectl logs -f xxxxxx -n hello-storageclass 命令查看 provisioner 是否成功创建,下图是我曾经遇到的问题,NFS 服务端权限设置有误导致 NFS 无法使用:


![在这里插入图片描述](https://img-blog.csdni


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


mg.cn/20200412105124630.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JvbGluZ19jYXZhbHJ5,size_16,color_FFFFFF,t_70)


  1. 创建 StorageClass 的脚本也从我的 github 下载,地址:https://raw.githubusercontent.com/zq2599/blog_demos/master/storageclass-demo/class.yaml

  2. 下载的 class.yaml 无需修改,直接使用:kubectl apply -f class.yaml

  3. class.yaml 中的 StorageClass 名为 managed-nfs-storage,后面的 PVC 就用这个名字去申请存储空间;

  4. 用 df 命令来检查挂载情况,发现 NFS 的已经挂载到 K8S 宿主机:



  1. 至此,StorageClass 已经就绪,K8S 环境中的 PVC 可以申请使用了,接下来通过实战验证应用的 pod 能否使用 StorageClass 的存储空间;

[](

)准备工作


  1. 接下来的实战是通过 helm 在 kubernetes 部署 tomcat,该 tomcat 所需的存储空间是通过 StorageClass 分配的,请您在 kubernetes 上准备好 helm,我这里用的是 2.16 版本

  2. helm 的安装和使用请参考[《部署和体验 Helm(2.16.1 版本)》](


)

[](

)tomcat 使用 StorageClass 实战


  1. 增加 helm 仓库(带有 tomcat 的仓库):helm repo add bitnami https://charts.bitnami.com/bitnami

  2. 下载 tomcat 的 chart:helm fetch bitnami/tomcat

  3. chart 下载成功后,当前目录出现 tomcat 配置压缩包 tomcat-6.2.4.tgz,解压:tar -zxvf tomcat-6.2.4.tgz

  4. 解压得到 tomcat 文件夹,进入后打开 values.yaml 文件,找到 persistence 节点,增加下图红框中的内容:



  1. 在 tomcat 目录下执行命令:


helm install --name-template tomcat001 -f values.yaml . --namespace hello-storageclass


  1. 查看 tomcat 的 pod 和 service 情况,一切正常,并且端口映射到了宿主机的 30300:



  1. 浏览器访问宿主机 IP:30300,出现 tomcat 欢迎页面:



  1. 去 NFS server 检查磁盘使用情况,如下图,可见已分配给 tomcat 的 PVC,并且写入了 tomcat 的基本数据:


[](

)清理资源


本次实战创建了各种类型的资源,使用下面的命令可以将其全部清理掉:


helm del --purge tomcat001

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
K8S的StorageClass实战(NFS),java程序设计任务驱动式教程