(k8s)kubernetes 挂载 minio csi 的方式(pod挂载pvc存在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生成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值