当前位置: 首页 > article >正文

(k8s)kubernetes 挂载 minio csi 的方式

一、安装Minio(Minio分布式集群搭建部署_minio集群最少几台-CSDN博客)

生成accessKeyID和secretAccessKey:

二、安装csi-s3插件(在k8s集群上)

首先我们把插件的yaml文件都下载下来,为了保证版本测试的一致性,我们下载v1.2.0-rc.2这个Tag

$ wget https://github.com/ctrox/csi-s3/archive/refs/tags/csi-s3-1.2.0-rc.2.tar.gz

解压,会得到目录csi-s3-1.2.0-rc.2

tar zxvf csi-s3-1.2.0-rc.2.tar.gz
[root@k8s-master01 ~]# cd csi-s3-1.2.0-rc.2/deploy/kubernetes/
[root@k8s-master01 kubernetes]# ls
attacher.yaml  csi-s3.yaml  examples  provisioner.yaml

 修改csi-s3.yaml中的quay.io/k8scsi/csi-node-driver-registrar:v1.2.0为quay.io/k8scsi/csi-node-driver-registrar:v2.1.0

[root@k8s-master01 kubernetes]# cat csi-s3.yaml | grep image
          image: quay.io/k8scsi/csi-node-driver-registrar:v1.2.0
          image: ctrox/csi-s3:v1.2.0-rc.2
          imagePullPolicy: "Always"

 修改后:

[root@k8s-master01 kubernetes]# cat csi-s3.yaml | grep image
          image: quay.io/k8scsi/csi-node-driver-registrar:v2.1.0
          image: ctrox/csi-s3:v1.2.0-rc.2
          imagePullPolicy: "Always"

安装插件: 

[root@k8s-master01 kubernetes]# kubectl create -f provisioner.yaml
[root@k8s-master01 kubernetes]# kubectl create -f attacher.yaml
[root@k8s-master01 kubernetes]# kubectl create -f csi-s3.yaml

查看csi容器已经处地Running状态 

[root@k8s-master01 ~]# kubectl get pod -n kube-system -o wide | grep csi
csi-attacher-s3-0                          1/1     Running   1 (86m ago)     170m    192.169.58.196   k8s-node02     <none>           <none>
csi-provisioner-s3-0                       2/2     Running   0               170m    192.169.85.196   k8s-node01     <none>           <none>
csi-s3-2rbh4                               2/2     Running   0               86m     192.168.79.130   k8s-node02     <none>           <none>
csi-s3-8mkbf                               2/2     Running   0               85m     192.168.79.129   k8s-node01     <none>           <none>

使用
首先我们在K8S集群中创建一个Minio的S3凭证,yaml文件如下(注意,这里secret下面用的stringData,所以下面的数据不需要经过base64编码)

[root@k8s-master01 ~]# vim csi-s3-secret.yaml
apiVersion: v1
kind: Secret
metadata:  
  name: csi-s3-secret  
  namespace: kube-system
stringData:
  accessKeyID: P4rOywJzZ03IzvLr7ix8
  secretAccessKey: m0BGZRr7UGgauOEcV55dEwCzl7drpHbxBLTA88MH  
  endpoint: "http://192.168.79.132:9029"  
  region: ""

接着,我们创建一个StorageClass(parameters中的命名空间为kube-system,和上面的secret要一致)

[root@k8s-master01 ~]# vim csi-s3-SC.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: csi-s3
provisioner: ch.ctrox.csi.s3-driver
parameters:
  mounter: rclone
  csi.storage.k8s.io/provisioner-secret-name: csi-s3-secret
  csi.storage.k8s.io/provisioner-secret-namespace: kube-system
  csi.storage.k8s.io/controller-publish-secret-name: csi-s3-secret
  csi.storage.k8s.io/controller-publish-secret-namespace: kube-system
  csi.storage.k8s.io/node-stage-secret-name: csi-s3-secret
  csi.storage.k8s.io/node-stage-secret-namespace: kube-system
  csi.storage.k8s.io/node-publish-secret-name: csi-s3-secret
  csi.storage.k8s.io/node-publish-secret-namespace: kube-system

接着,我们创建一个PVC

[root@k8s-master01 ~]# vim csi-s3-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: csi-s3-pvc
  namespace: default
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: csi-s3

应用三个yaml文件:

[root@k8s-master01 ~]# kubectl apply -f csi-s3-secret.yaml


[root@k8s-master01 ~]# kubectl apply -f csi-s3-SC.yaml


[root@k8s-master01 ~]# kubectl apply -f csi-s3-pvc.yaml

在集群中查看PV已经动态供给了,PVC为绑定状态

[root@k8s-master01 ~]# kubectl get pvc
NAME         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
csi-s3-pvc   Bound    pvc-afe861cc-bd67-4699-a44e-d5926347879e   10Gi       RWO            csi-s3         28m

我们再去到Minio的管理页面上看一下,已经有bucket生成


http://www.kler.cn/a/299922.html

相关文章:

  • Flutter_学习记录_导航和其他
  • HarmonyOS Next 应用UI生成工具介绍
  • 如何理解json和json字符串
  • Java学习笔记(二十四)
  • 概率论里的特征函数,如何用卷积定理去理解
  • simulink入门学习01
  • 2024年消防设施操作员考试题库及答案
  • 52. 两个链表的第一个公共节点
  • 沉浸式体验:ARM 工控机携手 HT for Web 打造智能建筑监控
  • Windows和Mac命令窗快速打开文件夹
  • L2线性回归模型
  • Vue跨域问题、Vue配置开发环境代理服务、集成Axios发送Ajax请求、集成vue-resource发送Ajax请求
  • MySQL系统库——mysql库
  • 一些硬件知识(二十二)
  • MDK编译过程、文件及_attribute__关键字
  • 常见的ROM(只读存储器)及其区别(超详细)
  • 探索深度学习的奥秘:从理论到实践的奇幻之旅
  • NPU是什么?特点及应用
  • 系统分析师--企业信息化战略与实施
  • LeetCode 61. 旋转链表
  • openeuler-无法dnf安装包问题
  • electron: 将网址打包成exe桌面应用
  • Android Dialog:Dialog和DialogFragment的区别?DialogFragment如何使用?源码解析
  • 解锁10款超棒的图表制作软件,让数据可视化不再困难
  • leetcode 994.腐烂的橘子
  • Django-Celery-Flower实现异步和定时爬虫及其监控邮件告警