详情页标题前

阿里云容器服务ACK使用CNFS自动扩容NAS存储卷-云淘科技

详情页1

通过定义CNFS中托管的NAS存储卷的扩容策略,可在NAS存储卷的使用率高于某个阈值时触发自动扩容。本文介绍如何使用CNFS实现NAS存储卷的自动扩容。

前提条件

  • 已创建Kubernetes托管版集群,且存储插件选择为CSI。

    • 若需要新建集群,选择CSI存储插件时,请同时选中创建默认NAS文件系统和CNFS容器网络文件系统动态存储类型

    • 若已创建集群,但未选中创建默认NAS文件系统和CNFS容器网络文件系统动态存储类型,请使用CNFS托管NAS文件系统。具体操作,请参见通过CNFS方式使用NAS文件系统。

  • CSI-Plugin和CSI-Provisioner组件版本不低于v1.20.5-ff6490f-aliyun。关于升级CSI-Plugin和CSI-Provisioner组件的操作,请参见升级CSI-Plugin和CSI-Provisioner。

  • CSI-Plugin默认的dnsPolicyClusterFirst。若要使用CNFS自动扩容NAS存储卷,需要手动将ClusterFirst改为ClusterFirstWithHostNet

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

  • 已通过Kubectl工具连接集群。

步骤一:配置NAS自动扩容策略

  1. 查看CNFS对象的状态。

    需要确保CNFS对象的状态为Available

    1. 执行以下命令查看CNFS对象。

      kubectl get cnfs

      预期输出:

      NAME                                      AGE
      default-cnfs-nas-837d6ea-20210819155623   14d
    2. 执行以下命令查看CNFS对象的状态。

      kubectl get cnfs  -o yaml | grep Available

      预期输出:

      status: Available
  2. 使用以下YAML模板创建NAS扩容策略。

    cat << EOF | kubectl apply -f -
    apiVersion: storage.alibabacloud.com/v1alpha1
    kind: StorageAutoScalerPolicy
    metadata:
      name: hybrid-expand-policy
    spec:
      pvcSelector:
        matchLabels:
          app: nginx      # 需要与PVC及Deployment下labels的配置相同,本示例均为app: nginx。
      namespaces:
        - default
        - nginx
      conditions:
        - name: condition1
          key: volume-capacity-used-percentage
          operator: Gt
          values:
            - "80"
      actions:
        - name: action1
          type: volume-expand
          params:
            scale: 100%
            limits: 500Gi
    EOF

    参数

    说明

    pvcSelector

    选择目标PVC,通过Label-Selector方式实现扩容策略与PVC之间的匹配。本示例为nginx。

    namespaces

    表示目标PVC所在的命名空间,多个命名空间为或逻辑。若不配置,默认为default。本示例为default及nginx。

    conditions

    表示触发规则的条件,多个condition为与逻辑。每个condition包含以下参数:

    • key:定义一个Metric的类型。

    • volume-capacity-used-percentage:表示容量使用百分比。

    • operator:定义规则,包含Gt(大于)、Lt(小于)、Eq(等于)或Ne(不等于),不限制英文字母大小写。

    • values:规则的具体数值。

    本示例表示当PVC容量的使用率高于80%时会触发actions。

    actions

    表示满足上述conditions时执行的操作,可以是多个操作。包含以下参数:

    • type:表示行为方式,目前只支持扩容。

    • scale:表示扩容的大小,单位为GiB,或可使用百分比。

    • limits:表示PVC在此action中的最大限制。

    若actions中有多个action时,则从首个action开始匹配,执行首个满足条件的action,其余跳过。

    本示例的action1表示,当满足扩容条件时NAS存储卷容量以当前容量的100%为单位扩容,最大扩容到500 GiB。

  3. 使用以下YAML模板创建PVC及Deployment。

    重要

    通过匹配扩容策略与对应PVC及Deployment之间的标签,将扩容策略应用到PVC及Deployment中。例如,本示例扩容策略中pvcSelector.matchLabels的值为app: nginx,对应PVC及Deployment中labels的值为app: nginx

    cat << EOF | kubectl apply -f -
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: cnfs-nas-pvc
      labels:
        app: nginx   # 需要与扩容策略YAML模板下pvcSelector.matchLabels的配置相同,本示例均为app: nginx。
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: alibabacloud-cnfs-nas
      resources:
        requests:
          storage: 50Gi
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cnfs-nas-deployment
      labels:
        app: nginx
    spec:
      selector:
        matchLabels:
          app: nginx   # 需要与扩容策略YAML模板下pvcSelector.matchLabels的配置相同,本示例均为app: nginx。
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            volumeMounts:
            - mountPath: "/data"
              name: cnfs-nas-pvc
          volumes:
          - name: cnfs-nas-pvc
            persistentVolumeClaim:
              claimName: cnfs-nas-pvc
    EOF

步骤二:验证NAS存储卷的自动扩容

  1. 执行以下命令查看命名空间default下的所有Pod。

    kubectl get pod

    预期输出:

    NAME                                                            READY   STATUS    RESTARTS   AGE
    cnfs-nas-deployment-56dbcc7fb7-wh79z   1/1      Running            0          20m
  2. 执行以下命令进入应用cnfs-nas-deployment-56dbcc7fb7-wh79z

    kubectl exec cnfs-nas-deployment-56dbcc7fb7-wh79z -ti sh
  3. 执行以下命令在NAS存储卷挂载目录写入50 GiB的测试数据。

    cd /data
    dd if= of=
  4. 执行以下命令查看触发扩容的事件。

    kubectl get events

    预期输出:

    default    0s    Warning   NotEnoughDiskSpace           persistentvolumeclaim/cnfs-nas-pvc              Pvc cnfs-nas-pvc is not enough disk space, namespace: default, totalSize:50Gi, usedSize:49Gi, usedPercentage:98.00%, threshold:85.00%
    default    1s    Warning   StartExpand                  persistentvolumeclaim/cnfs-nas-pvc              Start to expand of pvc cnfs-nas-pvc from 50Gi to 100Gi, usedCapacityPercentage:98%, freeSize:1024MB.
    default    0s    Normal    Resizing                     persistentvolumeclaim/cnfs-nas-pvc              External resizer is resizing volume nas-1acba306-e626-46f3-8441-110c10a6****
    default    0s    Warning   ExternalExpanding            persistentvolumeclaim/cnfs-nas-pvc              Ignoring the PVC: didn't find a plugin capable of expanding the volume; waiting for an external controller to process this PVC.
    default    0s    Normal    FileSystemResizeRequired     persistentvolumeclaim/cnfs-nas-pvc              Require file system resize of volume on node
    default    0s    Normal    FileSystemResizeSuccessful   pod/cnfs-nas-deployment-56dbcc7fb7-wh79z        MountVolume.NodeExpandVolume succeeded for volume "nas-1acba306-e626-46f3-8441-110c10a6****"

    从以上预期输出可得,当前NAS存储卷的容量使用量已超过80%,触发扩容,NAS存储卷容量将从50 GiB扩容到100 GiB。

  5. 在CSI Nodes监控大盘查看CNFS监控信息。

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

    2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > Prometheus监控

    3. Prometheus监控页面,单击存储监控页签,然后单击CSI存储组件监控-节点维度页签。

    4. CSI存储组件监控-节点维度页面,选择NAS存储卷所在的StorageTypeNamespace及PVC名称后,在Total Capacity区域可查看NAS存储卷当前容量。

      本示例StorageType选择为nasNamespace选择为defaultPVCcnfs-nas-pvc阿里云容器服务ACK使用CNFS自动扩容NAS存储卷-云淘科技

      从上图可看到,在16:55:30触发扩容,且扩容后容量为100 GiB。

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

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

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

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

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

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

(0)
上一篇 2023年12月10日 下午1:37
下一篇 2023年12月10日 下午1:40
详情页2

相关推荐

  • 阿里云容器服务ACK本地存储卷的初始化、挂载与自动扩容-云淘科技

    阿里云容器服务ACK支持本地存储,提供自动化的逻辑卷生命周期管理能力,且能根据节点本地存储容量进行调度。您可通过PVC/PV方式使用LVM及Quotapath本地存储卷。本文介绍如何在ACK集群中初始化本地存储、本地资源的挂载使用及如何配置本地存储卷自动扩容。 前提条件 已创建Kubernetes集群。具体操作,请参见创建Kubernetes托管版集群。背景…

    2023年12月10日
  • 阿里云容器服务ACKNAS存储卷FAQ-云淘科技

    本文为您介绍NAS存储卷常见问题的处理方法。 使用NAS存储卷时,提示chown: Operation not permitted 使用NAS动态存储卷时,Controller的任务队列已满且无法创建新的PV NAS存储卷挂载时间延长 使用NAS存储卷时,无法修改已创建的目录 当工作负载挂载NAS存储卷时,提示unknown filesystem type …

    阿里云容器服务 2023年12月10日
  • 阿里云容器服务ACK对OSS生命周期管理-云淘科技

    容器服务ACK使用CNFS(Container Network File System)对OSS Bucket全生命周期的管理,实现对Bucket层的独立管理。本文介绍如何使用CNFS对OSS Bucket全生命周期的管理及CNFS在工作负载中的应用。 前提条件 已创建Kubernetes集群,且存储插件选择为CSI。具体操作,请参见创建Kubernetes…

    阿里云容器服务 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云容器服务ACKNAS存储卷FAQ-云淘科技

    本文为您介绍NAS存储卷常见问题的处理方法。 使用NAS存储卷时,提示chown: Operation not permitted 使用NAS动态存储卷时,Controller的任务队列已满且无法创建新的PV NAS存储卷挂载时间延长 使用NAS存储卷时,无法修改已创建的目录 当工作负载挂载NAS存储卷时,提示unknown filesystem type …

    阿里云容器服务 2023年12月10日
  • 阿里云容器服务ACK通过CNFS自动收集异常退出的JVM转储文件-云淘科技

    当您的业务是使用Java开发,且设置的JVM堆空间过小时,程序会发生OOM(Out Of Memory)的问题。此时您可以使用CNFS(Container Network File System)作为记录日志的载体,挂载到容器内相应目录中,当JVM发生OOM时,CNFS可以将日志记录到相应的目录里。本文介绍如何使用CNFS自动收集异常退出的JVM转储文件。 …

    2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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