如何在k8s中对接s3存储

github地址:

https://github.com/majst01/csi-driver-s3

1.CSI for S3

这是用于 S3(或兼容 S3)存储的容器存储接口 (CSI)。它可以动态分配存储桶并通过Fuse mount将它们安装到任何容器中

2.状态

这仍处于试验阶段,不应在任何生产环境中使用。根据所使用的安装器和 S3 存储后端,可能会发生意外的数据丢失。

3.Kubernetes installation

3.1Requirements

Kubernetes 1.16+(CSI v1.0.0 兼容性)

Kubernetes 必须允许特权容器

Docker 守护进程必须允许共享挂载(Systemd 标志 MountFlags=shared)

3.2 用S3凭证创建secret

yaml 复制代码
# deploy/kubernetes/secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: csi-driver-s3-secret
  namespace: kube-system
stringData:
  accessKeyID: <YOUR_ACCESS_KEY_ID>
  secretAccessKey: <YOUR_SECRET_ACCES_KEY>
  # For AWS set it to "https://s3.<region>.amazonaws.com"
  endpoint: <S3_ENDPOINT_URL>
  # If not on S3, set it to ""
  region: <S3_REGION>

如果您使用其他 S3 兼容存储,region可以为空。

3.2 部署

bash 复制代码
kubectl apply -f deploy/kubernetes

如果你用的是k8s 1.25+ 的版本,下面这段可以不执行。

复制代码
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: psp-s3
spec:
  allowPrivilegeEscalation: true
  fsGroup:
    rule: RunAsAny
  privileged: true
  runAsUser:
    rule: RunAsAny
  seLinux:
    rule: RunAsAny
  supplementalGroups:
    rule: RunAsAny
  hostNetwork: true
  allowedHostPaths: []
  allowedCapabilities:
    - "SYS_ADMIN"
  volumes:
  - '*'

测试S3 driver

Create a PVC

bash 复制代码
kubectl apply -f deploy/sample/pvc.yaml

Check if the PVC has been bound:

bash 复制代码
$ kubectl get pvc
NAME                STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
csi-driver-s3-pvc   Bound     pvc-c5d4634f-8507-11e8-9f33-0e243832354b   5Gi        RWO            csi-driver-s3  9s

Create a test pod which mounts your volume:

bash 复制代码
kubectl apply -f deploy/sample/pod.yaml
If the pod can start, everything should be working.

Test the mount

bash 复制代码
$ kubectl exec -ti csi-driver-s3-test-nginx bash
$ mount | grep fuse
s3fs on /var/lib/www/html type fuse.s3fs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)
$ touch /var/lib/www/html/hello_world

用S3 Browser连接,发现bucket已经创建了,bucket的名称即为pv的名称

由于 S3 不是真正的文件系统,因此需要考虑一些限制。根据您使用的安装器,您将拥有不同级别的 POSIX 兼容性。此外,根据您使用的 S3 存储后端,并不总是有一致性保证。

相关推荐
sthnyph2 小时前
docker compose安装redis
redis·docker·容器
AIMath~3 小时前
雪花算法+ZooKeeper解决方案+RPC是什么
分布式·zookeeper·云原生
W.A委员会3 小时前
Docker基本使用流程
运维·docker·容器
gwjcloud4 小时前
Kubernetes从入门到精通(进阶篇)03
云原生·容器·kubernetes
GuokLiu4 小时前
260502-Clawith-Docker安装过程
运维·docker·容器·claw
日取其半万世不竭5 小时前
PeerTube 部署指南:自建视频托管平台
云原生·eureka·音视频
JesseDev5 小时前
Docker lnmp环境快速搭建开箱即用
运维·docker·容器
小义_6 小时前
【Kubernetes】(十二)配置存储卷
云原生·容器·kubernetes
BduL OWED7 小时前
Docker:基于自制openjdk8镜像 or 官方openjdk8镜像,制作tomcat镜像
docker·容器·tomcat
.柒宇.8 小时前
AI掘金头条项目 Docker Compose 部署完整教程(附踩坑记录)
运维·后端·python·docker·容器·fastapi