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
78365
分享
相关文章
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能
### SpringBoot3 + Vue3 前后端分离的Java快速开发框架更新 本次更新主要包含以下内容: 1. **端口修改**:为避免与Minio存储服务冲突,后端启动端口从9000改为9999。 2. **添加存储支持**:集成Minio和阿里云OSS对象存储服务,详细配置请参考相关文档。 3. **短信服务**:接入阿里云短信服务,并增加模拟发送功能,方便本地测试。 4. **邮件发送**:引入邮件发送功能,支持简单文本邮件和带附件邮件。 5. **完善个人中心**:优化个人中心页面,提升用户体验。
168 85
Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
103 20
阿里云对象存储OSS收费标准,存储、流量和请求等多个计费项
阿里云对象存储OSS收费标准涵盖存储、流量及请求费用,提供按量付费和包年包月两种模式。标准型OSS按量付费为0.09元/GB/月,包年包月40GB仅9元/年,500GB优惠价118元/年。流量费仅收取公网流出方向,内网流入流出免费。
71 13
k8s存储类型:emptyDir、hostPath、nfs、pvc及存储类storageclass的静态/动态创建pv
Kubernetes提供了多种存储类型,满足不同的应用需求。`emptyDir`和 `hostPath`适用于临时和宿主机存储需求,`nfs`适用于共享存储,`PersistentVolumeClaim`和 `StorageClass`实现了持久存储的灵活管理。通过理解和配置这些存储类型,可以有效提升Kubernetes集群的存储管理能力。
43 13
ACK容器监控存储全面更新:让您的应用运行更稳定、更透明
介绍升级之后的ACK容器监控体系,包括各大盘界面展示和概要介绍。
容器服务Kubernetes场景下可观测体系生产级最佳实践
阿里云容器服务团队在2024年继续蝉联Gartner亚洲唯一全球领导者象限,其可观测体系是运维的核心能力之一。该体系涵盖重保运维、大规模集群稳定性、业务异常诊断等场景,特别是在AI和GPU场景下提供了全面的观测解决方案。通过Tracing、Metric和Log等技术,阿里云增强了对容器网络、存储及多集群架构的监控能力,帮助客户实现高效运维和成本优化。未来,结合AI助手,将进一步提升问题定位和解决效率,缩短MTTR,助力构建智能运维体系。
阿里云 ACK FinOps成本优化最佳实践
本文源自2024云栖大会梁成昊演讲,讨论了成本优化策略的选择与实施。文章首先介绍了成本优化的基本思路,包括优化购买方式、调整资源配置等基础策略,以及使用弹性、资源混部等高级策略。接着,文章详细探讨了集群优化和应用优化的具体方法,如使用抢占式实例降低成本、通过资源画像识别并优化资源配置,以及利用智能应用弹性策略提高资源利用效率。
阿里云 ACK 高可用稳定性最佳实践
本文整理自2024云栖大会刘佳旭的演讲,主题为《ACK高可用稳定性最佳实践》。文章探讨了云原生高可用架构的重要性,通过Kubernetes的高可用案例分析,介绍了ACK在单集群高可用架构设计、产品能力和最佳实践方面的方法,包括控制面和数据面的高可用策略、工作负载高可用配置、企业版容器镜像服务高可用配置等内容,旨在帮助企业构建更加可靠和高效的应用运行环境。
阿里云对象存储OSS收费标准:存储、流量和请求等多个计费项详解
阿里云对象存储OSS提供多样化的计费模式,涵盖存储、流量、请求等多项费用。存储费用方面,按量付费标准型为0.09元/GB/月,包年包月则有9元40GB等多种选择。流量费用仅对公网出方向收费,价格区间从0.25至0.50元/GB不等,支持按量付费与流量包抵扣两种方式。更多详情及精准报价,欢迎访问阿里云OSS官方页面。
2410 1

热门文章

最新文章

相关产品

  • 容器服务Kubernetes版
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等