关于云计算:K8S的StorageClass实战NFS

43次阅读

共计 3951 个字符,预计需要花费 10 分钟才能阅读完成。

欢送拜访我的 GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,波及 Java、Docker、Kubernetes、DevOPS 等;

对于 StorageClass

在 K8S 环境,当 pod 须要存储空间时,StorageClass 比 PV 更灵便和不便,官网文档地址:https://kubernetes.io/docs/co…

本次实战

本次实战的指标是疾速创立 NFS 类型的 StorageClass,并验证该 StorageClass 失常可用,全文由以下局部组成:

  1. 创立 StorageClass;
  2. 通过 helm 下载 tomcat 的 chart;
  3. 批改 chart,让 tomcat 应用方才创立的 StorageClass;
  4. 在 NFS 服务端查看文件夹已失常写入;

环境信息和筹备工作

以下是创立 StorageClass 必备的环境信息:

  1. Kubernetes:1.15
  2. Kubernetes 宿主机:CentOS Linux release 7.7.1908
  3. NFS 服务:IP 地址 <font color=”blue”>192.168.50.135</font>,文件夹 <font color=”blue”>/volume1/nfs-storageclass-test</font>

参考文章

如果您想理解 Kubernetes 和 NFS 搭建的更多信息,请参考:

  1. 《kubespray2.11 装置 kubernetes1.15》
  2. 《Ubuntu16 环境装置和应用 NFS》
  3. 《K8S 应用群晖 DS218+ 的 NFS》

如果您曾经筹备好了 kubernetes 和 NFS,咱们就开始实战吧;

如何创立 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:<font color=”blue”>kubectl create namespace hello-storageclass</font>
  2. 创立 <font color=”blue”>rbac</font> 的脚本间接从我的 github 下载吧,地址:https://raw.githubusercontent…
  3. 下载的 rbac.yaml 文件中,namespace 是 <font color=”blue”>kafka-test</font>,当初要替换成 <font color=”red”>hello-storages</font>,执行命令替换:<font color=”blue”>sed -i ‘s/kafka-test/hello-storageclass/’ rbac.yaml</font>
  4. 创立 rbac:<font color=”blue”>kubectl apply -f rbac.yaml</font>
  5. 创立 provisioner 的脚本也从我的 github 下载,地址:https://raw.githubusercontent…
  6. 下载的 deployment.yaml 文件中,namespace 是 <font color=”blue”>kafka-test</font>,当初要替换成 <font color=”red”>hello-storages</font>,执行命令替换:<font color=”blue”>sed -i ‘s/kafka-test/hello-storageclass/’ deployment.yaml</font>
  7. 关上 deployment.yaml,设置 NFS 参数,批改下图红框的四个参数,红框 1 和 3 都是 NFS server 地址,红框 2 和 4 都是 NFS 调配的文件夹目录,请您依照理论的 NFS 资源来设置:

  1. 创立 provisioner:<font color=”blue”>kubectl apply -f deployment.yaml</font>
  2. <font color=”red”> 强烈建议 </font> 用 <font color=”blue”>kubectl describe pod xxxxxx -n hello-storageclass</font> 和 <font color=”blue”>kubectl logs -f xxxxxx -n hello-storageclass</font> 命令查看 provisioner 是否胜利创立,下图是我已经遇到的问题,NFS 服务端权限设置有误导致 NFS 无奈应用:

  1. 创立 StorageClass 的脚本也从我的 github 下载,地址:https://raw.githubusercontent…
  2. 下载的 class.yaml 无需批改,间接应用:<font color=”blue”>kubectl apply -f class.yaml</font>
  3. class.yaml 中的 StorageClass 名为 <font color=”blue”>managed-nfs-storage</font>,前面的 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 的仓库):<font color=”blue”>helm repo add bitnami https://charts.bitnami.com/bi…</font>
  2. 下载 tomcat 的 chart:<font color=”blue”>helm fetch bitnami/tomcat</font>
  3. chart 下载胜利后,当前目录呈现 tomcat 配置压缩包 <font color=”blue”>tomcat-6.2.4.tgz</font>,解压:<font color=”blue”>tar -zxvf tomcat-6.2.4.tgz</font>
  4. 解压失去 <font color=”blue”>tomcat</font> 文件夹,进入后关上 <font color=”blue”>values.yaml</font> 文件,找到 <font color=”red”>persistence</font> 节点,减少下图红框中的内容:

  1. 在 tomcat 目录下执行命令:
helm install --name-template tomcat001 -f values.yaml . --namespace hello-storageclass
  1. 查看 tomcat 的 pod 和 service 状况,一切正常,并且端口映射到了宿主机的 30300:

  1. 浏览器拜访 <font color=”blue”> 宿主机 IP:30300</font>,呈现 tomcat 欢送页面:

  1. 去 NFS server 查看磁盘应用状况,如下图,可见已调配给 tomcat 的 PVC,并且写入了 tomcat 的根本数据:

清理资源

本次实战创立了各种类型的资源,应用上面的命令能够将其全副清理掉:

helm del --purge tomcat001
kubectl delete storageclass managed-nfs-storage
kubectl delete deployment nfs-client-provisioner -n hello-storageclass
kubectl delete clusterrolebinding run-nfs-client-provisioner
kubectl delete serviceaccount nfs-client-provisioner -n hello-storageclass
kubectl delete role leader-locking-nfs-client-provisioner -n hello-storageclass
kubectl delete rolebinding leader-locking-nfs-client-provisioner -n hello-storageclass
kubectl delete clusterrole nfs-client-provisioner-runner
kubectl delete namespace hello-storageclass

至此,StorageClass 的创立和应用的实战就实现了,如果您在学习 kubernetes 存储相干的常识,心愿本文能给您一些参考;

欢送关注公众号:程序员欣宸

微信搜寻「程序员欣宸」,我是欣宸,期待与您一起畅游 Java 世界 …
https://github.com/zq2599/blog_demos

正文完
 0