详情页标题前

阿里云容器服务ACK对OSS生命周期管理-云淘科技

详情页1

容器服务ACK使用CNFS(Container Network File System)对OSS Bucket全生命周期的管理,实现对Bucket层的独立管理。本文介绍如何使用CNFS对OSS Bucket全生命周期的管理及CNFS在工作负载中的应用。

前提条件

  • 已创建Kubernetes集群,且存储插件选择为CSI。具体操作,请参见创建Kubernetes托管版集群。

  • csi-plugin和csi-provisioner组件版本不低于 v1.24.2-5b34494d-aliyun。关于升级CSI-Plugin和CSI-Provisioner组件的操作,请参见升级CSI-Plugin和CSI-Provisioner。

  • storage-operator组件版本不低于v1.24.95-e2d0756-aliyun。关于升级storage-operator组件的操作,请参见管理组件。

  • 已通过kubectl工具连接Kubernetes集群。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群。

功能介绍

您可以通过以下两种方式使用CNFS对OSS全生命周期的管理:

  • 方式一:使用CNFS创建以cnfs-oss-为名称的OSS Bucket

    使用CNFS创建集群唯一的对象存储桶,可以提供动态OSS PV能力。以cnfs-oss-为名称的OSS Bucket,使用OSS动态存储卷自动挂载创建的OSS Bucket,同时将OSS动态存储卷绑定到工作负载Deployment和StatefulSet中。

  • 方式二:使用已有的OSS Bucket创建CNFS

    使用CNFS指向已经存在的Bucket,可以通过创建一个CNFS CRD并指定对象存储的桶名(BucketName)来完成创建。然后使用OSS静态存储卷或OSS动态存储卷挂载已有的OSS Bucket,同时将创建的OSS静态存储卷或OSS动态存储卷绑定到工作负载Deployment中。

说明

BucketName:cnfs-oss-说明如下:

  • 如果BucketName已存在,使用Bucket作为ContainerNetworkFileSystem对应的目标Bucket。

  • 如果BucketName不存在,则会创建名称为指定名称的Bucket,并创建相应的ContainerNetworkFileSystem。比如:指定名称为cnfs-oss-,系统会创建Bucket名称为cnfs-oss-的对象存储,其中为ACK集群的ClusterID,保证BucketName全局唯一。

方式一:使用CNFS创建以cnfs-oss-为名称的OSS Bucket

  1. 执行以下内容,使用CNFS创建以cnfs-oss-为名称的OSS Bucket,并通过动态存储卷的方式,将OSS Bucket绑定到工作负载Deployment和StatefulSet中。

    替换以下为您的集群ID。

    # 创建CNFS、StorageClass和Deployment、StatefulSet对象。
    cat << EOF | kubectl apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: oss-secret
    stringData:
      akId: "xxxx"     #OSS Bucket挂载时必需的AKSK。
      akSecret: "xxxx"
    ---
    apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerNetworkFileSystem
    metadata:
      name: cnfs-oss-   #建议CNFS的名称与BucketName一致。
    spec:
      description: "cnfs-oss"
      type: oss
      reclaimPolicy: Retain        #只支持Retain策略,删除CNFS时并不会删除OSS Bucket。
      parameters:
        bucketName: cnfs-oss-  #如果Bucket已存在,会读取Bucket信息。如果Bucket不存在,则会创建名称为cnfs-oss-clusterid的Bucket,ClusterId需要填写为ACK集群的clusterid,来保证BucketName全局唯一。
        encryptType: "AES256"   #如果Bucket已存在,会将Bucket加密方式修改为AES256。如果Bucket不存在,会使用AES256作为加密方式。
        storageType: "Standard"  #OSS Bucket使用标准存储类型。
        aclType: "private"       #OSS Bucket的拥有者和授权用户有该Bucket内的文件的读写权限。
    ---
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alibabacloud-cnfs-oss
    parameters:
      containerNetworkFileSystem: cnfs-oss-   #创建StorageClass时,使用名称为cnfs-oss-clusterid的CNFS的Bucket信息。
      otherOpts: -o max_stat_cache_size=0 -o allow_other #缓存相关操作。
      path: /
      csi.storage.k8s.io/node-publish-secret-name: oss-secret      #使用oss-secret作为挂载的Secret。
      csi.storage.k8s.io/node-publish-secret-namespace: default    #oss-secret所在的命名空间。
    provisioner: ossplugin.csi.alibabacloud.com
    reclaimPolicy: Delete
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: cnfs-oss-pvc
    spec:
      accessModes:
        - ReadOnlyMany
      storageClassName: alibabacloud-cnfs-oss   #创建PVC时,使用名称为alibabacloud-cnfs-oss的StoragClass。
      resources:
        requests:
          storage: 100Gi
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cnfs-oss-deployment
      labels:
        app: nginx
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            volumeMounts:
            - mountPath: "/data"
              name: cnfs-oss-pvc
          volumes:
          - name: cnfs-oss-pvc   #创建Deployment时,使用名称为cnfs-oss-pvc的PVC。
            persistentVolumeClaim:
              claimName: cnfs-oss-pvc
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: cnfs-oss-sts
      labels:
        app: nginx
    spec:
      serviceName: "nginx"
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            volumeMounts:
            - mountPath: "/data"
              name: www
      volumeClaimTemplates:
      - metadata:
          name: www
        spec:
          accessModes: [ "ReadOnlyMany" ]
          storageClassName: "alibabacloud-cnfs-oss"   #创建StatefulSet时,使用名称为cnfs-oss-pvc的PVC。
          resources:
            requests:
              storage: 100Gi
    EOF

    CNFS输入参数说明:

    参数

    说明

    description

    当前文件系统的简单描述。

    type

    需要创建的存储卷类型。

    reclaimPolicy

    回收策略,目前仅支持Retain策略,删除CNFS时并不会删除OSS Bucket。

    parameters.bucketName

    OSS Bucket的名称。

    parameters.storageType

    存储类型,默认为Standard。取值:

    • Standard:标准存储。

    • IA:低频访问。

    • Archive:归档存储。

    • ColdArchive:冷归档存储。

    说明

    使用归档存储和冷归档存储的文件无法直接被读写访问,需要解冻后再访问。

    parameters.redundancyType

    存储冗余类型,默认为ZRS。取值:

    • LRS(本地冗余存储):采用单可用区(AZ)内的数据冗余存储机制,将用户的数据冗余存储在同一个可用区内多个设施的多个设备上。本地冗余存储能确保硬件失效时的数据持久性和可用性。

    • ZRS(同城冗余存储):采用多可用区(AZ)内的数据冗余存储机制,将用户的数据冗余存储在同一地域(Region)的多个可用区。当某个可用区不可用时,同城冗余存储仍然能够保障数据的正常访问。

    重要

    • 仅storage-operator组件为v1.26.2-1de13b6-aliyun或以上版本时,支持该参数设置。

    • 使用ZRS时,无法使用OSS冷归档存储和深度冷归档存储。

    • storageType和redundancyType的相关计费说明,请参见计费项。

    parameters.encryptType

    加密方式。

    • None:不加密。

    • AES256:使用OSS服务端的AES256加密。

    • SM4:使用OSS服务端的SM4加密。

    parameters.aclType

    指定Bucket的访问权限ACL,默认为private。取值:

    • public-read-write(公共读写):所有用户都有该Bucket内文件的读写权限。请谨慎使用该访问权限。

    • public-read(公共读):Bucket的拥有者和授权用户有该Bucket内文件的读写权限,其他用户只有该Bucket内文件的读权限。请谨慎使用该访问权限。

    • private(私有):Bucket的拥有者和授权用户有该Bucket内文件的读写权限,其他用户没有权限操作该Bucket内的文件。

    parameters.enableVersioning

    Bucket版本控制状态,默认为Enabled。取值:

    • Enabled:开启版本控制。

    • Suspended:暂停版本控制。

    • None:不开启版本控制。

    重要

    • 仅storage-operator组件为v1.26.2-1de13b6-aliyun或以上版本时,支持该参数设置。

    • Bucket版本控制,与合规保留策略以及OSS-HDFS服务无法同时配置,若您后续计划开通这两项服务,请配置enableVersioning为None

    • 如果Bucket处于Enabled开启版本状态,将无法返回至None未开启状态。此时,您可以暂停Bucket的版本控制状态。

    • 版本控制功能本身不收取任何费用,但对当前版本和所有历史版本的文件都会收取存储费用。您可以通过配置生命周期回收历史版本。更多信息,请参见生命周期规则概述。

  2. 执行以下命令,查看创建的OSS Bucket。

    kubectl get cnfs/cnfs-oss- -o yaml

    预期输出:

    apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerNetworkFileSystem
    metadata:
      annotations:
        kubectl.kubernetes.io/last-applied-configuration: |
          {"apiVersion":"storage.alibabacloud.com/v1beta1","kind":"ContainerNetworkFileSystem","metadata":{"annotations":{},"name":"cnfs-oss-xxxxxxxxxx"},"spec":{"description":"cnfs-oss","parameters":{"aclType":"private","bucketName":"cnfs-oss-clusterid","encryptType":"AES256","storageType":"Standard"},"reclaimPolicy":"Retain","type":"oss"}}
      creationTimestamp: "2022-09-18T07:02:34Z"
      finalizers:
      - protection.alibabacloud.com/cnfs
      generation: 6
      name: cnfs-oss-****
      resourceVersion: "8091291"
      uid: ca187b2a-3bfa-4a5f-82d8-ca1b1f69****
    spec:
      description: cnfs-oss
      parameters:
        aclType: private
        bucketName: cnfs-oss-****
        encryptType: AES256
        storageType: Standard
      reclaimPolicy: Retain
      type: oss
    status:
      conditions:
      - lastProbeTime: "2022-09-18 15:02:39"
        reason: The oss bucket is complete initialization.
        status: Ready
      fsAttributes:
        accessGroupName: DEFAULT_VPC_GROUP_NAME
        aclType: private
        bucketName: cnfs-oss-****
        encryptType: AES256
        endPoint:
          extranet: oss-****.aliyuncs.com
          internal: oss-****-internal.aliyuncs.com
        regionId: ****
        storageType: Standard
      status: Available

    CNFS输出参数说明:

    参数

    说明

    status

    CNFS的当前状态,包括以下状态:

    • Pending:等待。

    • Creating:创建中。

    • Initialization:创建文件系统中。

    • Available:可用。

    • Unavailable:暂时不可用,可以恢复为可用状态。

    • Fatal:不可用,无法恢复。

    • Terminating:删除中。

    conditions.lastProbeTime

    最后探活的时间。

    conditions.reason

    处于当前状态的原因。

    conditions.status

    当前状态是否可用。

    • Ready:可用状态。

    • NotReady:不可用状态。

    fsAttributes.accessGroupName

    挂载点所应用的权限组名称,目前仅支持DEFAULT_VPC_GROUP_NAME(专有网络默认权限组)。

    fsAttributes.encryptType

    加密方式。

    • None:不加密。

    • AES256:使用OSS服务端的AES256加密。

    • SM4:使用OSS服务端的SM4加密。

    fsAttributes.regionId

    ACK集群所在的地域。

    fsAttributes.storageType

    存储类型,默认为Standard。

    • Standard:标准存储。

    • IA:低频访问。

    • Archive:归档存储。

    • ColdArchive:冷归档存储。

    说明

    使用归档存储和冷归档存储的文件无法直接被读写访问,需要解冻后再访问。

    fsAttributes.redundancyType

    存储冗余类型,默认为ZRS。取值:

    • LRS(本地冗余存储):采用单可用区(AZ)内的数据冗余存储机制,将用户的数据冗余存储在同一个可用区内多个设施的多个设备上。本地冗余存储能确保硬件失效时的数据持久性和可用性。

    • ZRS(同城冗余存储):采用多可用区(AZ)内的数据冗余存储机制,将用户的数据冗余存储在同一地域(Region)的多个可用区。当某个可用区不可用时,同城冗余存储仍然能够保障数据的正常访问。

    重要

    • 仅storage-operator组件为v1.26.2-1de13b6-aliyun或以上版本时,支持该参数设置。

    • 使用ZRS时,无法使用OSS冷归档存储和深度冷归档存储。

    • storageType和redundancyType的相关计费说明,请参见计费项。

    fsAttributes.aclType

    CNFS指定Bucket的访问权限ACL,默认为private。

    fsAttributes.endPoint

    CNFS的端点地址。

    • extranet:公网端点地址。

    • internal:内网端点地址。

    fsAttributes.enableVersioning

    Bucket版本控制状态,默认为Enabled。取值:

    • Enabled:开启版本控制。

    • Suspended:暂停版本控制。

    • None:不开启版本控制。

    重要

    • 仅storage-operator组件为v1.26.2-1de13b6-aliyun或以上版本时,支持该参数设置。

    • Bucket版本控制,与合规保留策略以及OSS-HDFS服务无法同时配置,若您后续计划开通这两项服务,请配置enableVersioning为None

    • 如果Bucket处于Enabled开启版本状态,将无法返回至None未开启状态。此时,您可以暂停Bucket的版本控制状态。

    • 版本控制功能本身不收取任何费用,但对当前版本和所有历史版本的文件都会收取存储费用。您可以通过配置生命周期回收历史版本。更多信息,请参见生命周期规则概述。

  3. 执行以下命令,查看已创建应用的状态。

    kubectl get pod

    预期输出:

    NAME                                   READY   STATUS    RESTARTS   AGE
    cnfs-oss-deployment-5864fd8d98-4****   1/1     Running   0          2m21s
    cnfs-oss-sts-0                         1/1     Running   0          2m21s
    cnfs-oss-sts-1                         1/1     Running   0          2m16s

    由预期输出可得,所创建的Deployment、StatefulSet为Running状态,表示该Deployment已正常使用CNFS。

方式二:使用已有的OSS Bucket创建CNFS

使用CNFS指向已经存在的Bucket,可以通过创建一个CNFS CRD并指定对象存储的桶名(BucketName)来完成创建。然后使用OSS静态存储卷或OSS动态存储卷挂载已有的OSS Bucket,同时将创建的OSS静态存储卷或OSS动态存储卷绑定到工作负载Deployment中。

  1. 执行以下命令,使用已有的OSS Bucket创建CNFS。

    cat <<EOF | kubectl apply -f -
    apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerNetworkFileSystem
    metadata:
      name: cnfs-oss-exist-bucket-name
    spec:
      description: "cnfs-oss"
      type: oss
      reclaimPolicy: Retain
      parameters:
        bucketName: bucket-name #已经存在的OSS Bucket名称。
    EOF
  2. 执行以下命令,查看OSS Bucket的详细信息。

    kubectl get cnfs/cnfs-oss-exist-bucket-name -o yaml

    预期输出:

    apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerNetworkFileSystem
    metadata:
      annotations:
        kubectl.kubernetes.io/last-applied-configuration: |
          {"apiVersion":"storage.alibabacloud.com/v1beta1","kind":"ContainerNetworkFileSystem","metadata":{"annotations":{},"name":"cnfs-oss-xxxx"},"spec":{"description":"cnfs-oss","parameters":{"bucketName":"exist-bucket-name"},"reclaimPolicy":"Retain","type":"oss"}}
      creationTimestamp: "2022-09-14T09:21:10Z"
      finalizers:
      - protection.alibabacloud.com/cnfs
      generation: 7
      name: cnfs-oss-exist-bucket-name
      resourceVersion: "6504134"
      uid: 921564ac-0cd8-4a89-997d-c2393afd****
    spec:
      description: cnfs-oss
      parameters:
        bucketName: exist-bucket-name
      reclaimPolicy: Retain
      type: oss
    status:
      conditions:
      - lastProbeTime: "2022-09-14 17:00:21"
        reason: The oss bucket is complete initialization.
        status: Ready
      fsAttributes:
        accessGroupName: DEFAULT_VPC_GROUP_NAME
        aclType: private
        bucketName: exist-bucket-name
        encryptType: AES256
        endPoint:
          extranet: oss-****.aliyuncs.com           
          internal: oss-****-internal.aliyuncs.com
        regionId: ****
        storageType: Standard
      status: Available
  3. 在OSS存储卷中应用CNFS。

    具体操作,请参见方式一:使用CNFS创建以cnfs-oss-为名称的OSS Bucket,通过动态存储卷的方式应用CNFS。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/157976.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云对象存储OSSJava管理存储空间读写权限-云淘科技

    存储空间(Bucket)是存储对象(Object)的容器。对象都隶属于存储空间。本文介绍如何设置和获取存储空间读写权限(ACL)。 注意事项 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见访问域名和数据中心。 本…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSSOSS ON云盒快速入门-云淘科技

    通过OSS ON云盒,您可以对本地数据进行数据监控、数据处理等操作。OSS ON云盒适用于业务要求低延时、多分支机构统一管理等场景。本文介绍OSS ON云盒的基本操作,包括创建云盒Bucket、在Bucket中上传文件(Object)以及下载Object。 前提条件 仅华东1(杭州)、华南1(深圳)、华南2(河源)、华北2(北京)、西南1(成都)地域支持使用…

    阿里云对象存储 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云对象存储OSSPython断点续传上传-云淘科技

    通过断点续传上传的方式将文件上传到OSS前,您可以指定断点记录点。上传过程中,如果出现网络异常或程序崩溃导致文件上传失败时,将从断点记录处继续上传未上传完成的部分。 注意事项 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSSPython判断文件是否存在-云淘科技

    本文介绍如何判断文件是否存在。 注意事项 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见访问域名和数据中心。 本文以从环境变量读取访问凭证为例。如何配置访问凭证,请参见Python配置访问凭证。 本文以OSS域名…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSS数据处理概述-云淘科技

    您可以通过简单的REST API口在任何时间、任何地点、任何互联网设备上对存储在OSS中的数据进行分析处理。 数据处理包含以下内容: 说明 全新发布20余项数据数据处理能力,涵盖文档、音视频、图片智能、批量处理和自动触发,详情请参见 智能媒体管理快速入门。 功能模块 说明 相关文档 图片处理 图片处理包括图片缩放、自定义裁剪、图片样式等。 图片处理简介 智能…

    阿里云对象存储 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。