k8s csi驱动demo项目代码

原创资源 吴就业 109 0 2024-06-12

博客文章"通过实验理解csi卷创建、挂载、卸载、删除的全流程"的附件项目代码,可基于此demo修改实现自己的csi驱动程序,该驱动程序实现nfs挂载,不一定使用gcp的filestore文件系统,可以改成其它支持nfs协议的文件系统。

付费资源 ¥0.50,付费后可永久下载!登录

相关博客文章

关于这个csi驱动

这是基于gcp的filestore文件系统服务实现的csi驱动。gcp的filestore文件系统服务支持nfs3协议,驱动实现通过nfs挂载使用。 一个filestore实例就是一个nfs文件系统服务,我们将一个nfs文件系统服务通过划分不同目录当成不同的卷,但由于filestore最多只支持创建80个一级目录,所以我们不用一级目录作为卷,而是二级目录。 这个csi驱动只实现共享pv,即一个pv可以给多个pod同时挂载使用。 该驱动在创建卷(PV)的时候,如果filestore实例不存在,则调用google api创建一个filestore实例,否则不调用。 创建卷就是在controller组件上挂载filestore实例(挂载一级目录),然后为卷创建二级目录。

如何让这个项目跑起来?

1.首先通过项目的Dockerfile构建镜像,然后推送到自己的镜像仓库

2.在gcp上创建一个vpc,用这个vpc创建一个gke集群

3.修改deploy/chart下的values.yaml - 3.1 修改image为你的镜像地址(不需要加版本号) - 3.2 修改vpc名称为你k8s集群使用的vpc的名称 - 3.3 修改fileStore配置,修改project(gcp上的项目id)和location(区域)

4.构建打包helm char,通过helm char安装驱动,构建时需要指定版本号

helm package ./ -d ./ --version CHART_VERSION --app-version APP_VERSION
  • CHART_VERSION替换为你的helm char的版本
  • APP_VERSION替换为你打包的docker镜像的版本

5.创建一个名为gcp-filestore-csi-driver-sa的secret资源,放在你驱动将要部署的namespace下。 在gcp上创建一个IAM,赋予filestore的api权限,然后下载证书,把证书的内容拷贝到 gcp-filestore-csi-driver-sa资源的data。

apiVersion: v1
kind: Secret
metadata:
    name: gcp-filestore-csi-driver-sa
    namespace: {你部署csi驱动helm char时指定的namespace}
data:
    gcp_filestore_csi_driver_sa.json: >-
        经过base64编码的证书内容
type: Opaque