如何在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 存储后端,并不总是有一致性保证。

相关推荐
阿里云云原生2 天前
阿里云获评 Agentic AI 开发平台领导者,函数计算 AgentRun 赢下关键分!
云原生
蝎子莱莱爱打怪2 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
崔小汤呀2 天前
Docker部署Nacos
docker·容器
缓解AI焦虑2 天前
Docker + K8s 部署大模型推理服务:资源划分与多实例调度
docker·容器
阿里云云原生2 天前
MSE Nacos Prompt 管理:让 AI Agent 的核心配置真正可治理
微服务·云原生
阿里云云原生3 天前
当 AI Agent 接管手机:移动端如何进行观测
云原生·agent
阿里云云原生3 天前
AI 原生应用开源开发者沙龙·深圳站精彩回顾 & PPT下载
云原生
阿里云云原生3 天前
灵感启发:日产文章 100 篇,打造“实时热点洞察”引擎
云原生
1candobetter3 天前
Docker Compose Build 与 Up 的区别:什么时候必须重建镜像
docker·容器·eureka
~莫子3 天前
Haproxy七层负载详解+实验详细代码
云原生