使用OSS静态存储卷

本文为您介绍通过使用Secret方式挂载OSS静态存储卷。

注意事项

若您在应用模板中配置了securityContext.fsGroup参数,kubelet在存储卷挂载完成后会执行chmodchown操作,导致挂载时间延长。

说明

若已配置securityContext.fsGroup参数,且需要减少挂载时间。具体操作,请参见OSS存储卷挂载时间延长

操作步骤

  1. 创建PV。

    您可以通过kubectl或者通过容器服务控制台界面创建PV。

    kubectl

    您可以使用Secret方式在PV中使用AccessKey。

    1. 执行以下命令,创建Secret。

      替换以下<your AccessKey ID><your AccessKey Secret>为您的AccessKey IDAccessKey Secret信息。在容器服务管理控制台,鼠标悬浮右上角user,选择AccessKey,获取AccessKey IDAccessKey Secret信息。

      kubectl create secret generic osssecret --from-literal=akId='<your AccessKey ID>' --from-literal=akSecret='<your AccessKey Secret>' --type=alicloud/oss -n default

      osssecret:Secret的名称,可以自行配置。

      akId:AccessKey ID。

      akSecret:AccessKey Secret。

      --type:Secret类型:配置为alicloud/oss的命名空间,需要与应用Pod在相同的命名空间。

    2. 使用oss-pv.yaml文件创建PV。

      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: pv-oss
      spec:
        capacity:
          storage: 5Gi
        accessModes:
          - ReadWriteMany
        storageClassName: oss
        flexVolume:
          driver: "alicloud/oss"
          secretRef:
            name: "osssecret"  # 替换为上一步创建的Secret名称。
          options:
            bucket: "docker"
            url: "oss-cn-hangzhou.aliyuncs.com"
            path: "/path"  
            otherOpts: "-o max_stat_cache_size=0 -o allow_other"

    控制台

    1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

    2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择存储 > 存储卷

    3. 存储卷页面,单击创建,在弹出对话框中,配置存储卷的相关参数。配置完成后,单击创建

      参数

      描述

      存储卷类型

      本示例中为OSS。

      名称

      创建的数据卷的名称。数据卷名在集群内必须唯一。本例为pv-oss

      存储驱动

      本示例选择Flexvolume。

      总量

      所创建存储卷的容量。

      访问模式

      默认为ReadWriteMany

      访问证书

      选择访问OSS所需的保密字典。

      • 选择已有保密字典:选择命名空间保密字典

      • 新建保密字典:配置命名空间名称AccessKey IDAccessKey Secret

      可选参数

      您可以为OSS存储卷输入定制化参数,格式为:-o *** -o ***

      Bucket ID

      您要使用的OSS Bucket的名称。单击选择Bucket,在弹出的对话框中选择所需的Bucket并单击选择

      访问域名

      如果BucketECS实例位于不同地域(Region),请选择公网域名;若是经典网络,请选择私网域名

      标签

      为该存储卷添加标签。

  2. 创建PVC。

    使用oss-pvc.yaml文件创建PVC。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-oss
    spec:
      storageClassName: oss
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
  3. 创建Pod。

    使用oss-deploy.yaml创建Pod。

    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: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
              - name: pvc-oss
                mountPath: "/data"
            livenessProbe:
              exec:
                command:
                - sh
                - -c
                - cd /data
              initialDelaySeconds: 30
              periodSeconds: 30
          volumes:
          - name: pvc-oss
            persistentVolumeClaim:
              claimName: pvc-oss