共计 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 失常可用,全文由以下局部组成:
- 创立 StorageClass;
- 通过 helm 下载 tomcat 的 chart;
- 批改 chart,让 tomcat 应用方才创立的 StorageClass;
- 在 NFS 服务端查看文件夹已失常写入;
环境信息和筹备工作
以下是创立 StorageClass 必备的环境信息:
- Kubernetes:1.15
- Kubernetes 宿主机:CentOS Linux release 7.7.1908
- NFS 服务:IP 地址 <font color=”blue”>192.168.50.135</font>,文件夹 <font color=”blue”>/volume1/nfs-storageclass-test</font>
参考文章
如果您想理解 Kubernetes 和 NFS 搭建的更多信息,请参考:
- 《kubespray2.11 装置 kubernetes1.15》
- 《Ubuntu16 环境装置和应用 NFS》
- 《K8S 应用群晖 DS218+ 的 NFS》
如果您曾经筹备好了 kubernetes 和 NFS,咱们就开始实战吧;
如何创立 StorageClass
把创立 StorageClass 要做的的事件理分明:
- 创立 namespace,这里用 hello-storageclass(您也能够选用本人喜爱的);
- 创立 rbac:因为 StorageClass 有对应的 pod 要运行,每个 pod 都有本人的身份即 serviceaccount,而这个 serviceaccount 是和某个角色绑定的,所以要创立:serviceaccount、rule、rolebinding;
- 创立 provisioner,即关联 NFS 的工作类,负责给 PVC 提供存储资源,这里用的是 nfs-client-provisioner;
- 创立 StorageClass,所有须要 PVC 通过该 StorageClass 即可取得存储空间;
接下来请 SSH 登录 kubernetes 环境,依照上述步骤操作;
创立 StorageClass
- 创立 namespace:<font color=”blue”>kubectl create namespace hello-storageclass</font>
- 创立 <font color=”blue”>rbac</font> 的脚本间接从我的 github 下载吧,地址:https://raw.githubusercontent…
- 下载的 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>
- 创立 rbac:<font color=”blue”>kubectl apply -f rbac.yaml</font>
- 创立 provisioner 的脚本也从我的 github 下载,地址:https://raw.githubusercontent…
- 下载的 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>
- 关上 deployment.yaml,设置 NFS 参数,批改下图红框的四个参数,红框 1 和 3 都是 NFS server 地址,红框 2 和 4 都是 NFS 调配的文件夹目录,请您依照理论的 NFS 资源来设置:
- 创立 provisioner:<font color=”blue”>kubectl apply -f deployment.yaml</font>
- <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 无奈应用:
- 创立 StorageClass 的脚本也从我的 github 下载,地址:https://raw.githubusercontent…
- 下载的 class.yaml 无需批改,间接应用:<font color=”blue”>kubectl apply -f class.yaml</font>
- class.yaml 中的 StorageClass 名为 <font color=”blue”>managed-nfs-storage</font>,前面的 PVC 就用这个名字去申请存储空间;
- 用 df 命令来查看挂载状况,发现 NFS 的曾经挂载到 K8S 宿主机:
- 至此,StorageClass 曾经就绪,K8S 环境中的 PVC 能够申请应用了,接下来通过实战验证利用的 pod 是否应用 StorageClass 的存储空间;
筹备工作
- 接下来的实战是通过 helm 在 kubernetes 部署 tomcat,该 tomcat 所需的存储空间是通过 StorageClass 调配的,请您在 kubernetes 上筹备好 helm,我这里用的是 2.16 版本
- helm 的装置和应用请参考《部署和体验 Helm(2.16.1 版本)》
tomcat 应用 StorageClass 实战
- 减少 helm 仓库 (带有 tomcat 的仓库):<font color=”blue”>helm repo add bitnami https://charts.bitnami.com/bi…</font>
- 下载 tomcat 的 chart:<font color=”blue”>helm fetch bitnami/tomcat</font>
- chart 下载胜利后,当前目录呈现 tomcat 配置压缩包 <font color=”blue”>tomcat-6.2.4.tgz</font>,解压:<font color=”blue”>tar -zxvf tomcat-6.2.4.tgz</font>
- 解压失去 <font color=”blue”>tomcat</font> 文件夹,进入后关上 <font color=”blue”>values.yaml</font> 文件,找到 <font color=”red”>persistence</font> 节点,减少下图红框中的内容:
- 在 tomcat 目录下执行命令:
helm install --name-template tomcat001 -f values.yaml . --namespace hello-storageclass
- 查看 tomcat 的 pod 和 service 状况,一切正常,并且端口映射到了宿主机的 30300:
- 浏览器拜访 <font color=”blue”> 宿主机 IP:30300</font>,呈现 tomcat 欢送页面:
- 去 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
正文完