K8S有状态服务-OSS存储使用最佳实践

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 阿里云对象存储服务(OSS)提供海量、安全、低成本、高可靠的云存储服务。适用于配置文件、图片、小视频等共享业务;

OSS介绍:

阿里云对象存储服务(OSS)提供海量、安全、低成本、高可靠的云存储服务。适用于配置文件、图片、小视频等共享业务;

容器服务访问OSS 数据是通过 ossfs 把 bucket 挂载到本地文件系统中,容器中的应用通过本地文件系统操作OSS上的数据,实现数据的访问、共享。

使用OSS卷挂载时:

随机或者追加写文件会导致整个文件的重写。

元数据操作,例如list directory,性能较差,因为需要远程访问OSS服务器。

多个客户端挂载同一个bucket时,用户自行处理并发。例如:避免多个客户端写同一个文件。

不适合用在高并发读/写的场景,这样会让系统的load升高。

创建OSS存储卷

创建OSS Bucket

  1. 在OSS控制台创建一个Bucket,根据需求配置bucket的读写权限;
  2. 在概览页查询访问bucket的Endpoint;
  3. 可以在集群中一个节点挂载OSS Bucket测试是否可行;

创建PV

通过OSS卷创建PV资源类型,配置PV唯一性标签alicloud-pvname: pv-oss,“pv-oss”为PV Name;

配置storageClassName: oss,标识此PV为oss存储类型,只会与oss类型的PVC绑定;

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-oss
  labels:
    alicloud-pvname: pv-oss
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  storageClassName: oss
  flexVolume:
    driver: "alicloud/oss"
    options:
      bucket: "docker"
      url: "oss-cn-hangzhou.aliyuncs.com"
      akId: "***"
      akSecret: "***"
      otherOpts: "-o max_stat_cache_size=0 -o allow_other"
AI 代码解读

options支持的参数:

bucket:目前只支持挂载 Bucket,不支持挂载 Bucket 下面的子目录或文件。

url: OSS Bucket的endpoint,挂载 OSS 的接入域名。

akId: 用户的 access id 值。

akSecret:用户的 access secret 值。

otherOpts: 挂载 OSS 时支持定制化参数输入,格式为: -o **。 参考文档

创建应用

PVC通过配置selector,指定与创建的oss PV进行绑定;

配置storageClassName: oss,表示至于OSS类型存储卷绑定;

OSS为共享存储,可以同时由多个Pod挂载一个bucket;

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc-oss
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: oss
  resources:
    requests:
      storage: 5Gi
  selector:
    matchLabels:
      alicloud-pvname: pv-oss
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: oss-static
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
        volumeMounts:
          - name: pvc-oss
            mountPath: "/data"
          - name: pvc-oss
            mountPath: "/data1"
        livenessProbe:
          exec:
            command:
            - sh
            - -c
            - cd /data
          initialDelaySeconds: 30
          periodSeconds: 30
      volumes:
        - name: pvc-oss
          persistentVolumeClaim:
            claimName: pvc-oss
AI 代码解读

健康检查使用说明

OSSFS通过s3fs进行bucket挂载,是在用户态挂载的文件系统(FUSE);OSSFS在kubelet重置的时候会重新启动,这时容器内部的bind目录已经不可用,需要重启容器;配置健康检查能保证容器内oss目录不可用时重启容器,进而重新bind oss目录;(升级最近版本flexvolume可解决此问题)

livenessProbe 参数说明:

command:sh -c cd /oss-path;语法如上面示例所示,目录为容器内部的oss对应目录,多个目录时写一个即可;
initialDelaySeconds:容器启动后开始检查的时间;
periodSeconds:检查时间周期;
AI 代码解读

高可用验证

创建服务:

# kubectl create -f oss.yaml
persistentvolume "pv-oss" created
persistentvolumeclaim "pvc-oss" created
deployment.apps "oss-static" created

# kubectl get pod
NAME                          READY     STATUS    RESTARTS   AGE
oss-static-5d8cd48d96-9gc6c   1/1       Running   0          3s
AI 代码解读

OSS Bucket上创建临时文件:

# kubectl exec oss-static-5d8cd48d96-9gc6c ls /data | grep tmpfile

# kubectl exec oss-static-5d8cd48d96-9gc6c touch /data/tmpfile

# kubectl exec oss-static-5d8cd48d96-9gc6c ls /data/ | grep tmpfile
tmpfile

AI 代码解读

删除Pod,查看新创建Pod数据:

# kubectl delete pod oss-static-5d8cd48d96-9gc6c

# kubectl get pod
NAME                          READY     STATUS        RESTARTS   AGE
oss-static-5d8cd48d96-bfwb2   1/1       Running       0          14s

# kubectl exec oss-static-5d8cd48d96-bfwb2 ls /data | grep tmpfile
tmpfile

AI 代码解读
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
打赏
0
0
0
1
78364
分享
相关文章
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
阿里云对象存储oss怎么收费?存储费用+流量收费标准
阿里云对象存储OSS收费标准包含存储费、流量费及请求费等,支持按量付费与包年包月两种模式。标准型本地冗余存储按量付费价格为0.09元/GB/月,包年包月500GB预留空间优惠价118元/年。流量费仅收取公网出方向费用,忙时0.50元/GB,闲时0.25元/GB。更多详情可参考官方页面。
Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能
### SpringBoot3 + Vue3 前后端分离的Java快速开发框架更新 本次更新主要包含以下内容: 1. **端口修改**:为避免与Minio存储服务冲突,后端启动端口从9000改为9999。 2. **添加存储支持**:集成Minio和阿里云OSS对象存储服务,详细配置请参考相关文档。 3. **短信服务**:接入阿里云短信服务,并增加模拟发送功能,方便本地测试。 4. **邮件发送**:引入邮件发送功能,支持简单文本邮件和带附件邮件。 5. **完善个人中心**:优化个人中心页面,提升用户体验。
214 85
Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
390 188
阿里云对象存储OSS收费标准:500G存储118元1年、
阿里云对象存储OSS 2025年收费标准涵盖存储、流量及请求等费用,支持按量付费与包年包月两种模式。标准型存储按量价格为0.09元/GB/月,包年包月如9元享40GB体验价。流量费仅收取公网出方向,忙时0.50元/GB,闲时0.25元/GB。此外提供多种存储类型(低频、归档等)及流量包优惠方案,未使用功能不收费。详情见阿里云OSS官网。
167 6
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
阿里云对象存储OSS收费标准,存储、流量和请求等多个计费项
阿里云对象存储OSS收费标准涵盖存储、流量及请求费用,提供按量付费和包年包月两种模式。标准型OSS按量付费为0.09元/GB/月,包年包月40GB仅9元/年,500GB优惠价118元/年。流量费仅收取公网流出方向,内网流入流出免费。
267 13
k8s存储类型:emptyDir、hostPath、nfs、pvc及存储类storageclass的静态/动态创建pv
Kubernetes提供了多种存储类型,满足不同的应用需求。`emptyDir`和 `hostPath`适用于临时和宿主机存储需求,`nfs`适用于共享存储,`PersistentVolumeClaim`和 `StorageClass`实现了持久存储的灵活管理。通过理解和配置这些存储类型,可以有效提升Kubernetes集群的存储管理能力。
112 13

热门文章

最新文章

相关产品

  • 容器服务Kubernetes版