Skip to content

wujunyi792/oss-csi-lite-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

适用于非阿里云集群的oss-csi插件

项目来源于阿里云Kubernetes CSI插件,原插件功能强大, 支持将云盘、NAS、CPFS、OSS、LVM作为集群PV。 但是,如果用的是自建集群,且不使用自建集群的方式接入阿里云,我们无法使用该工具(需要内网)。

2023.3月,alibaba-cloud-csi-driver 发布了全新版本,更新了部署yaml,但是文档没有跟上,所以很坑

本仓库针对个人需求对源代码进行了删改,完美解决了个人需求:

  • 只需要支持 amd64 处理机
  • 只需要支持 oss 作为存储卷
  • 集群结点不算多

如果你的需求和我一样,那么可以参考本项目,或者跟着本教程直接使用

1. 安装步骤

1.1 宿主机安装 ossfs

“ossfs 能让您在 Linux 系统中,将对象存储OSS的存储空间(Bucket)挂载到本地文件系统中,您能够像操作本地文件一样操作OSS的对象(Object),实现数据的共享。”

在原仓库中,宿主机中的 ossfs 由容器中 nsenter 管理安装和更新。但是版本非常混乱,因此综合考虑,自己手动为 ossfs 安装比较方便。

必须为每一台 node 安装,因此假如结点很多,这个方法对你来说不合适(原脚本中会判断宿主机中的OS类型完成安装,但是我还是把这些逻辑删了,因为总会出现离奇 bug)。

安装过程参考ossfs 快速安装,安装包给的不多,个人推荐源码安装,因为真的比直接下载二进制包方便(仅对于 ossfs,官方安装包有点旧)。 源码安装过程直接看ossfs Github,以Ubuntu为例,步骤示例如下:

apt-get install automake autotools-dev g++ git libcurl4-gnutls-dev \
                     libfuse-dev libssl-dev libxml2-dev make pkg-config
git clone https://github.com/aliyun/ossfs.git
cd ossfs
./autogen.sh
./configure
make
sudo make install

1.2 k8s安装依赖

在集群中部署01-rbac.yaml02-csi-driver.yaml,分别用于声明权限和定义插件执行 Node Attach 的方式。文件均来自原仓库同路径文件,直接 apply 即可:

kubectl apply -f ./deploy/01-rbac.yaml
kubectl apply -f ./deploy/02-csi-driver.yaml

1.3 集群中安装oss插件

docker仓库中找到最新版本的镜像,替换03-csi-plugin.yaml中容器csi-plugin的image(前提是你也是amd64,仓库中只提供了amd64版本)。

然后直接部署即可:

kubectl apply -f ./deploy/03-csi-plugin

稍等片刻,容器启动成功,你的集群每个结点都会运行 csi-plugin 的 pod img.png

当然,你也可以自己构建镜像(本仓库只支持 amd),步骤如下: 0. 安装 Golang 1.18 以上版本

  1. 修改build-amd64-image.sh中的仓库地址等信息
  2. cd build && sh build-amd64-image.sh
  3. 稍等片刻,镜像就会推送到自己的仓库
  4. 修改03-csi-plugin.yaml中的镜像为自己的镜像,然后kubectl apply -f ./deploy/03-csi-plugin完成安装

2. 测试步骤

oss的csi插件已经部署完成,我们接下来创建pv,pvc和一个nginx来做测试。测试yaml同样来自于原仓库

2.1 配置存储桶

这里就不细说了,去阿里云 oss 开一个 bucket,然后申请一对 AccessID 和 AccessKey,填写在01-pv.yaml中,其中url为 oss 外网 Endpoint,可在访问域名和数据中心 查看

2.2 部署pv pvc

kubectl apply -f ./examples/01-pv.yaml
kubectl apply -f ./examples/02-pvc.yaml
kubectl apply -f ./examples/03-deploy.yaml

随后等待nginx部署成功 pic2.png

2.3 测试

进去 nginx 的 pod shell,往 /data 底下写个文件,再去 oss 里看看有没有出现

# in pod shell
cd /data
echo hello > 1.txt

pic3.png pic4.png 成功!

3. TODO

  • 原仓库还有个 csi-provisioner.yaml,里面有一些 StorageClass 方法,直接跑也是跑不起来的,有空可以support以下
  • 支持以下异构集群

About

在非阿里云集群中挂在OSS为存储卷

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published