全部产品

OSS(FlexVolume)

更新时间:2020-08-16 21:38:27

前提条件

  • K8S集群中正确部署了virtual-kubelet(serverless Kubernetes 默认集成)。

  • 使用OSS之前,您需要先在OSS管理控制台上创建Bucket,请参见创建存储空间

说明

  • 相同 region 的 OSS Bucket 可以使用内网地址进行挂载。

  • 有关于OSS存储卷使用说明,请参见oss存储卷使用说明。

使用RamRole方式

针对存放在 Bucket 的 Object 的访问,OSS 提供了多种权限控制方式,包括 ACL、Bucket Policy 和 RAM Policy(推荐使用)。可根据业务需求来管理权限控制。具体请参见权限控制概述。

1、EciOssRoleShare具有OSSFull权限

EciOssRoleShare

2、使用role的方式挂载oss,创建并复制以下内容到 flexvolume-oss.yaml 中。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-oss-deploy
spec:
  replicas: 1
  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: "liumihust"
              url: "oss-cn-hangzhou.aliyuncs.com"
              otherOpts: "-o max_stat_cache_size=0 -o allow_other"
              ramRole: "EciOssRoleShare"

使用kubectl创建:

# kubectl create -f flexvolume-oss.yaml

# kubectl get pod nginx-oss-deploy-759c8cc4f4-dqgk5
NAME                                READY   STATUS    RESTARTS   AGE
nginx-oss-deploy-759c8cc4f4-dqgk5   1/1     Running   0          10m

# kubectl exec -it nginx-oss-deploy-759c8cc4f4-dqgk5 bash
root@nginx-oss-deploy-759c8cc4f4-dqgk5:/# ls
bin   data  docker-entrypoint.d   etc lib    media  opt   root  sbin  sys  usr
boot  dev   docker-entrypoint.sh  home  lib64  mnt    proc  run   srv tmp  var
root@nginx-oss-deploy-759c8cc4f4-dqgk5:/# cd data/
root@nginx-oss-deploy-759c8cc4f4-dqgk5:/data# ls
 eci
 format-test.jar
 fromLocalVM
 liumi20200305
 test
 vvvv
''$'\351\230\277\351\207\214\344\272\221\345\274\271\346\200\247\345\256\271\345\231\250\345\256\236\344\276\213\357\274\210''ECI'$'\357\274\211\344\272\247\345\223\201\344\273\213\347\273\215'' v0.2.pptx'
root@nginx-oss-deploy-759c8cc4f4-dqgk5:/data#

直接传用户AK方式

说明

直接传用户AK有两种方式(考虑到安全性,不建议使用):

  • 直接传用户AK给option。

  • 通过创建Secret输入AK信息的方式。

1、如下使用直接传用户AK的方式

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-oss-deploy
spec:
  replicas: 1
  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: "liumihust"
              url: "oss-cn-hangzhou.aliyuncs.com" # 
              otherOpts: "-o max_stat_cache_size=0 -o allow_other"
              akId: "***"
              akSecret: "***"