全部产品
Search
文档中心

挂载OSS(FlexVolume)

更新时间: 2021-10-13

本文介绍如何通过FlexVolume为ECI实例挂载阿里云OSS。

前提条件

  • K8s集群中已正确部署Virtual kubelet(VK)。

    阿里云ASK集群已默认集成VK,其它集群需要您自行部署VK。更多信息,请参见对接概述

  • 已创建OSS Bucket。

    您可以登录OSS管理控制台创建OSS Bucket。具体操作,请参见创建存储空间

配置说明

对于存放在OSS Buckect的Object的访问,OSS提供了多种权限控制策略,包括ACL、Bucket Policy和RAM Policy等。更多信息,请参见访问控制概述

挂载OSS存储卷时,flexVolume下的options参数说明如下:

  • bucket:OSS Bucket的名称。

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

  • url:OSS Bucket的接入域名。

    要挂载的Pod与OSS Bucket的所属地域相同时,可以使用内网地址。

  • otherOpts:定制化参数。格式为-o *** -o ***

  • ramRole:使用RAM角色授权时,对应的RAM角色。

  • akId和akSecret:使用AccessKey直接授权时,对应的AccessKey ID和AccessKey Secret。

配置示例

  1. 选择授权方式。

    • 如果使用RAM角色授权,请创建RAM角色并为该角色授权。

      创建角色时,可信实体类型为阿里云服务,角色类型为普通服务角色,受信服务为云服务器;为角色授权时,请选择AliyunOSSFullAccess权限策略。

      具体操作,请参见创建RAM角色为RAM角色授权

    • 如果使用AccessKey直接授权,请获取AccessKey ID和AccessKey Secret。具体操作,请参见获取AccessKey

  2. 准备YAML配置文件。

    创建flexvolume-oss.yaml文件。根据授权方式,对应的文件内容示例如下:

    • 使用RAM角色

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx-oss-deploy
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
            - name: nginx-flexvolume-oss
              image: nginx
              volumeMounts:
                - name: "oss1"
                  mountPath: "/data"
            volumes:
              - name: "oss1"
                flexVolume:
                  driver: "alicloud/oss"
                  options:
                    bucket: "test"
                    url: "oss-cn-hangzhou.aliyuncs.com"
                    otherOpts: "-o max_stat_cache_size=0 -o allow_other"
                    ramRole: "EciOssRoleShare"
    • (不推荐)使用AccessKey

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx-oss-deploy
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
            - name: nginx-flexvolume-oss
              image: nginx
              volumeMounts:
                - name: "oss1"
                  mountPath: "/data"
            volumes:
              - name: "oss1"
                flexVolume:
                  driver: "alicloud/oss"
                  options:
                    bucket: "test"
                    url: "oss-cn-hangzhou.aliyuncs.com" 
                    otherOpts: "-o max_stat_cache_size=0 -o allow_other"
                    akId: "***"
                    akSecret: "***"
  3. 创建Deployment。

    kubectl create -f flexvolume-oss.yaml
  4. 查看结果。

    查看Pod内的文件目录,已生成OSS Bucket对应的挂载目录/data

    挂载OSS