赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 分布式云容器平台ACK One
  4. 操作指南
  5. 注册集群
  6. 接入云上Serverless算力
  7. ACS算力
  8. ACS算力高级配置
  9. 静态挂载OSS存储卷

静态挂载OSS存储卷

  • ACS算力高级配置
  • 发布于 2025-04-18
  • 0 次阅读
文档编辑
文档编辑

如果应用需要存储图片、音视频等非结构化数据,可以使用OSS作为持久化存储卷。本文介绍如何为应用静态挂载OSS存储卷,并验证OSS的共享存储和持久化存储。

注意事项

OSS是一个海量、安全、低成本、高可靠的存储空间,适合存储写入后较少修改的数据,以及非结构化数据(如图片、音视频等)。更多信息,请参见存储概述。

  • OSS为共享存储,一个OSS存储卷可以挂载到多个Pod上。

  • 挂载目录中建议存放的文件数不要超过1000个。

    通过ossfs进行ls等操作时,将发起HTTP请求到OSS获取文件的Meta信息,如果ls的目标目录下文件较多,ossfs将消耗大量系统内存,可能会导致Pod发生OOM(Out Of Memory)事件。您可以通过挂载OSS Bucket的子目录,或对文件较多的目录进行目录分级来避免此问题。

创建并获取OSS Bucket信息

  1. 创建OSS Bucket。

    1. 登录OSS管理控制台,在左侧导航栏单击Bucket列表。

    2. 单击创建Bucket。

    3. 在弹出面板完成OSS Bucket相关参数配置,然后单击完成创建,并完成后续操作。

      需要注意的参数如下。更多信息,请参见创建存储空间。

      参数

      说明

      Bucket 名称

      自定义输入,在OSS范围内全局唯一,创建成功后不允许修改。格式要求请参考界面提示。

      地域

      建议选择有地域属性,并选择ACS集群所属地域,使得后续ACS集群中的Pod可以通过内网访问OSS Bucket。

  2. (可选)如果需要挂载OSS Bucket的子目录,按需创建子目录。

    1. 在Bucket列表页面,单击目标Bucket名称。

    2. 在Bucket详情页面的左侧导航栏,选择文件管理 > 文件列表。

    3. 根据需要单击新建目录,对OSS Bucket进行目录分级。

  3. 获取OSS Bucket的Endpoint。

    1. 在Bucket列表页面,单击目标Bucket名称。

    2. 在Bucket详情页面,单击概览页签,然后在访问端口区域,复制目标Endpoint。

      • OSS Bucket和ACS集群属于相同地域时,请复制VPC内网的Endpoint。

      • OSS Bucket没有地域属性,或者和ACS集群属于不同地域时,请复制外网的Endpoint。

  4. 获取AccessKey ID和AccessKey Secret,用于OSS授权访问。具体操作,请参见获取AccessKey。

    说明

    如果需要跨账号挂载OSS Bucket,请获取OSS Bucket所属账号的AccessKey。

静态挂载OSS存储卷

步骤一:创建PV

  1. 将以下YAML内容保存为oss-pv.yaml。

    apiVersion: v1
    kind: Secret
    metadata:
      name: oss-secret
      namespace: default
    stringData:
      akId: <your AccessKey ID>
      akSecret: <your AccessKey Secret>
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: oss-pv
      labels:
        alicloud-pvname: oss-pv
    spec:
      storageClassName: test 
      capacity:
        storage: 20Gi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: oss-pv
        nodePublishSecretRef:
          name: oss-secret
          namespace: default
        volumeAttributes:
          bucket: "<your OSS Bucket Name>"
          url: "<your OSS Bucket Endpoint>"
          otherOpts: "-o max_stat_cache_size=0 -o allow_other"
    说明

    以上YAML可以创建一个Secret和一个PV。Secret用于保存AccessKey,以便在PV中可以安全使用。请使用实际的AccessKey ID和AccessKey Secret替换akId和akSecret的取值。

    PV的相关参数说明如下:

    参数

    说明

    alicloud-pvname

    PV的标签。用于绑定PVC。

    storageClassName

    该配置仅用于绑定PVC,无需关联实际的StorageClass。

    storage

    OSS存储卷的容量大小。

    说明

    OSS静态卷的容量仅起声明效果,实际容量不受限制,可使用量以OSS控制台显示为准。

    accessModes

    访问模式。

    persistentVolumeReclaimPolicy

    回收策略。

    driver

    驱动类型。此处配置为ossplugin.csi.alibabacloud.com,表示使用阿里云OSS CSI插件。

    volumeHandle

    PV的唯一标识符,与metadata.name保持一致。

    nodePublishSecretRef

    从指定的Secret中获取AccessKey,用于授权认证。

    bucket

    OSS Bucket的名称。请使用实际的OSS Bucket名称替换bucket的取值。

    url

    OSS Bucket的接入域名(Endpoint)。请使用实际的OSS Bucket的Endpoint替换url的取值。

    • OSS Bucket和ACS集群属于相同地域时,使用VPC内网的Endpoint。例如oss-cn-shanghai-internal.aliyuncs.com。

    • OSS Bucket没有地域属性,或者和ACS集群属于不同地域时,使用外网的Endpoint。例如oss-cn-shanghai.aliyuncs.com。

    otherOpts

    挂载参数。格式为-o *** -o ***,例如:-o max_stat_cache_size=0 -o allow_other。

  2. 创建Secret和PV。

    kubectl create -f oss-pv.yaml
  3. 查看PV。

    kubectl get pv

    预期返回:

    NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON   AGE
    oss-pv   20Gi       RWX            Retain           Available           test           <unset>                          9s

步骤二:创建PVC

  1. 将以下YAML内容保存为oss-pvc.yaml。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: oss-pvc
    spec:
      storageClassName: test
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 20Gi
      selector:
        matchLabels:
          alicloud-pvname: oss-pv

    相关参数说明如下:

    参数

    说明

    storageClassName

    该配置仅用于绑定PV,无需关联实际的StorageClass。与PV的spec.storageClassName保持一致。

    accessModes

    访问模式。

    storage

    分配给Pod的存储容量。不能高于OSS存储卷的容量。

    alicloud-pvname

    要绑定的PV的标签。与PV的metadata.labels.alicloud-pvname保持一致。

  2. 创建PVC。

    kubectl create -f oss-pvc.yaml
  3. 查看PVC。

    kubectl get pvc

    预期返回如下,此时PVC已绑定步骤一创建的PV。

    NAME      STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    oss-pvc   Bound    oss-pv   20Gi       RWX            test           <unset>                 6s

步骤三:创建应用并挂载OSS

  1. 使用以下YAML内容,创建oss-test.yaml文件。

    以下YAML示例可以创建包含2个Pod的Deployment,2个Pod均通过名为oss-pvc的PVC申请存储资源,挂载路径均为/data。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: oss-test
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
            alibabacloud.com/compute-class: general-purpose
            alibabacloud.com/compute-qos: default
            alibabacloud.com/acs: "true"          
        spec:
          containers:
          - name: nginx
            image: mirrors-ssl.aliyuncs.com/nginx:stable-alpine
            ports:
            - containerPort: 80
            volumeMounts:
              - name: pvc-oss
                mountPath: /data
          volumes:
            - name: pvc-oss
              persistentVolumeClaim:
                claimName: oss-pvc
  2. 创建Deployment并挂载OSS。

    kubectl create -f oss-test.yaml
  3. 查看Deployment中Pod的部署情况。

    kubectl get pod | grep oss-test

    返回示例如下,已创建2个Pod。

    oss-test-****-***a   1/1     Running   0          28s
    oss-test-****-***b   1/1     Running   0          28s
  4. 查看挂载路径。

    命令示例如下,预期会返回OSS Bucket挂载目录下的数据,默认为空。

    kubectl exec oss-test-****-***a -- ls /data

验证OSS的共享存储和持久化存储

按照上文示例创建的Deployment中含有2个Pod,2个Pod同时挂载了同一OSS Bucket。您可以通过以下方式进行验证:

  • 在一个Pod中创建文件,然后另一个Pod中查看文件,以此来验证共享存储。

  • 重建Deployment,然后在新创建的Pod中查看OSS Bucket中的数据是否存在,以此来验证持久化存储。

  1. 查看Pod信息。

    kubectl get pod | grep oss-test

    返回示例如下:

    oss-test-****-***a   1/1     Running   0          40s
    oss-test-****-***b   1/1     Running   0          40s
  2. 验证共享存储。

    1. 在一个Pod中创建文件。

      以名为oss-test-****-***a的Pod作为示例:

      kubectl exec oss-test-****-***a -- touch /data/test.txt
    2. 在另一个Pod中查看文件。

      以名为oss-test-****-***b的Pod作为示例:

      kubectl exec oss-test-****-***b -- ls /data

      预期返回如下,可以看到已共享新建的文件test.txt。

      test.txt
  3. 验证持久化存储。

    1. 重建Deployment。

      kubectl rollout restart deploy oss-test
    2. 查看Pod,等待新Pod创建成功。

      kubectl get pod | grep oss-test

      返回示例如下:

      oss-test-****-***c   1/1     Running   0          67s
      oss-test-****-***d   1/1     Running   0          49s
    3. 在新Pod中查看文件系统中的数据是否存在。

      以名为oss-test-c***的Pod作为示例:

      kubectl exec oss-test-****-***c -- ls /data

      预期返回如下,可以看到OSS Bucket中的数据依然存在,在新Pod的挂载目录下可以重新获取。

      test.txt
相关文章

使用自建镜像仓库创建ACS Pod 2025-04-18 18:14

拉取自建镜像仓库中的镜像时,可能会碰到因协议不同、证书认证失败或者使用了自建DNS服务器而导致镜像拉取失败的问题。本文介绍在自建镜像仓库采用HTTP协议和使用自签发证书或者自建DNS服务器的情况下,如何拉取自建镜像仓库中的镜像来创建ACS工作负载。 功能说明 拉取自建镜像仓库中的镜像时,可能会碰到E

为ACS Pod配置自定义DNS 2025-04-18 18:14

如果您需要使用自建DNS服务来解析镜像仓库以及其他应用的域名,需要将ACS Pod使用的DNS配置为您自建的DNS服务器。本文介绍如何为ACS Pod配置自定义DNS。 适用范围 以下3种情况可以通过Annotation配置自定义DNS:

使用PrivateLink解决数据中心网段IP冲突 2025-04-18 18:14

数据中心的Kubernetes集群通过专线接入ACK One注册集群后,在使用Serverless算力资源时,ack-virtual-node组件需要调用阿里云内网的OpenAPI进行资源生命周期管理。而这些内网的OpenAPI域名解析的IP地址通常都是100网段的IP,可能会导致内网中使用相同网段

静态挂载NAS存储卷 2025-04-18 18:14

对于共享数据,I/O要求较高的应用场景,您可以使用文件存储 NAS(File Storage NAS)作为持久化存储卷。本文介绍如何为应用

静态挂载OSS存储卷 2025-04-18 18:14

如果应用需要存储图片、音视频等非结构化数据,可以使用OSS作为持久化存储卷。本文介绍如何为应用静态挂载OSS存储卷,并验证OSS的共享存储和持久化存储。 注意事项 OSS是一个海量、安全、低成本、高可靠的存储空间,适合存储写入后较少修改的数据,以及非结构化数据(如图片、音视频等)。更多信息,请参见存

增加临时存储空间大小 2025-04-18 18:14

ACS Pod默认提供30 GiB的免费的临时存储空间(EphemeralStorage),如果该存储空间大小无法满足您的需求,您可以自定义增加临时存储空间大小。 背景信息 每个ACS Pod默认提供30 GiB的临时存储空间(免费),如下图所示。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号