赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 边缘节点服务 ENS
  4. 实践教程
  5. ACK Edge集群管理ENS
  6. 使用ENS云盘

使用ENS云盘

  • ACK Edge集群管理ENS
  • 发布于 2025-04-16
  • 0 次阅读
文档编辑
文档编辑

ENS云盘是在ACK Edge集群的ENS节点上使用的云盘。ACK Edge集群支持使用CSI插件创建ENS云盘静态存储卷和ENS云盘动态存储卷。本文介绍如何在CSI插件中挂载ENS云盘静态存储卷和ENS云盘动态存储卷。

前提条件

  • 已创建ACK Edge集群,具体操作,请参见创建边缘托管版集群。

  • 已创建边缘节点,具体操作,请参见创建实例,并将该节点加入ACK Edge集群,具体操作,请参见添加边缘节点。

  • 已安装csi-ens-plugin和csi-ens-provisioner组件,具体操作,请参见管理组件。

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

  • 使用静态云盘时,请确保已创建按量付费的ENS云盘并记录云盘ID为d-wz92s6d95go6ki9x****。

使用说明

  • 在应用部署时,推荐通过StorageClass自动创建PV购买云盘。如果您已经购买云盘,则使用云盘静态存储卷。

  • 申请云盘的大小,不能超出云盘的单盘容量范围。更多信息,请参见存储规格。

  • 当Pod重建时,会重新挂载原云盘。若由于其他限制无法调度到原可用区,则Pod将会处于Pending状态。

  • 动态创建的云盘为按量付费的云盘,关于云盘计费项信息,请参见块存储计费。关于云盘的价格信息,请参见详细定价。

  • ENS云盘为阿里云存储团队提供的非共享存储,只能同时被一个Pod挂载。

  • ACK Edge集群中与ENS云盘在同一地域的ENS节点才能挂载ENS云盘。

  • 不支持回收和删除ENS云盘。相关操作,需在ENS控制台操作。

使用ENS云盘动态存储卷

步骤一:创建storageclass

在多地域集群场景下,您可以根据不同的场景通过以下两种方式创建StorageClass。

方式一:使用Topology(延迟绑定)方式创建StorageClass

延迟绑定可以优化ACK Edge集群中存在多个地域的问题。以下通过部署名为storage-class-csi-topology.yaml文件为例,创建StorageClass。

  1. 使用以下内容,创建storage-class-topology.yaml文件。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-ens-disk-available
    provisioner: ensplugin.csi.alibabacloud.com
    parameters:
      type: available
      fsType: ext4
    volumeBindingMode: WaitForFirstConsumer
    reclaimPolicy: Retain
    allowVolumeExpansion: false

    参数

    说明

    name

    StorageClass的名称。

    provisioner

    配置为ensplugin.csi.alibabacloud.com。表示使用ENS云盘Provisioner插件创建StorageClass。

    type

    云盘类型。

    regionId

    可选,自动创建云盘所在的地域。

    reclaimPolicy

    云盘的回收策略,仅支持Retain,当删除PVC的时候,PV和云盘数据不会被删除,需要您手动删除。

    volumeBindingMode

    云盘的绑定模式。默认为Immediate,支持WaitForFirstConsumer。

    • Immediate:表示先创建云盘再创建Pod。

    • WaitForFirstConsumer:延迟绑定,即调度器先调度Pod,并根据Pod的可用区信息创建云盘。

  2. 执行以下命令,创建StorageClass。

    kubectl apply -f storage-class-topology.yaml
  3. 查看创建的StorageClass。

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

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

    在存储类页面查看创建的StorageClass。

方式二:先创建云盘再创建Pod的方式创建StorageClass

  1. 使用以下内容,创建storage-class-csi.yaml文件。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-ens-disk-available
    provisioner: ensplugin.csi.alibabacloud.com
    parameters:
      type: available
      regionId: xxx
    reclaimPolicy: Retain
    allowVolumeExpansion: false
    volumeBindingMode: Immediate
  2. 执行以下命令,创建StorageClass。

    kubectl apply -f storage-class-csi.yaml
  3. 查看创建的StorageClass。

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

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

    在存储类页面查看创建的StorageClass。

步骤二:创建PVC

  1. 使用以下内容,创建pvc-ssd.yaml文件。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: disk-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      volumeMode: Filesystem
      resources:
        requests:
          storage: 25Gi
      storageClassName: alicloud-ens-disk-available
  2. 执行以下命令,创建PVC。

    kubectl create -f pvc-ssd.yaml
  3. 查看创建的PVC。

    在集群管理页左侧导航栏选择存储 > 存储声明。可以在存储声明页面查看创建的PVC。

步骤三:创建应用

  1. 使用以下内容,创建pvc-dynamic.yaml文件。

    创建一个名为nginx-dynamic的应用,并挂载PVC。

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: nginx-dynamic
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: pvc-disk
              mountPath: /data
          volumes:
            - name: pvc-disk
              persistentVolumeClaim:
                claimName: disk-pvc

    参数

    说明

    mountPath

    云盘挂载的位置。

    claimName

    PVC的名称,用于绑定PVC。

  2. 执行以下命令, 创建应用并挂载PVC。

    kubectl create -f pvc-dynamic.yaml
  3. 查看创建的应用。

    在集群管理页左侧导航栏选择工作负载 > 有状态。您可以在有状态页面看到创建的应用。

使用ENS云盘静态存储卷

步骤一:创建PV

  1. 使用以下内容,创建pv-static.yaml文件。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: csi-pv
      labels:
        alicloud-pvname: static-disk-pv
    spec:
      capacity:
        storage: 25Gi
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ensplugin.csi.alibabacloud.com
        volumeHandle: "<your-disk-id>"
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: topology.ensplugin.csi.alibabacloud.com/region
              operator: In
              values:
              - "<your-node-region-id>"     # ENS节点RegionID。可通过查看ENS节点label中topology.ensplugin.csi.alibabacloud.com/region参数查看ENS节点RegionID。

    参数

    说明

    name

    PV的名称。

    labels

    设置PV的标签。

    storage

    云盘的可使用量。

    accessModes

    设置访问模式。

    persistentVolumeReclaimPolicy

    PV的回收策略。

    driver

    定义驱动类型。取值为ensplugin.csi.alibabacloud.com,表示使用ENS云盘CSI插件。

    volumeHandle

    定义云盘ID。

    nodeAffinity

    定义PV和PVC所属的区域信息。

    通过定义该参数,可以将PV和PVC所在的Pod调度到对应的区域上。

  2. 执行以下命令,创建PV。

    kubectl create -f pv-static.yaml
  3. 查看创建的PV。

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

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

    在存储卷页面可看到创建的PV。

步骤二:创建PVC

  1. 使用以下内容,创建pvc-static.yaml文件。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: csi-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 25Gi
      selector:
        matchLabels:
          alicloud-pvname: static-disk-pv

    参数

    说明

    name

    PVC的名称。

    accessModes

    设置访问模式。

    storage

    声明应用使用量,不能大于存储卷的总量。

    matchLabels

    通过标签关联PV,与PV标签保持一致。

  2. 执行以下命令,创建PVC。

    kubectl create -f pvc-static.yaml
  3. 查看创建的PVC。

    在集群管理页左侧导航栏选择存储 > 存储声明。可以在存储声明页面查看创建的PVC。

步骤三:创建应用

本文以Web应用为例,在应用中挂载PVC。

  1. 使用以下内容,创建web.yaml文件。

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web
    spec:
      selector:
        matchLabels:
          app: nginx
      serviceName: "nginx"
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: pvc-disk
              mountPath: /data
          volumes:
            - name: pvc-disk
              persistentVolumeClaim:
                claimName: csi-pvc

    参数

    说明

    mountPath

    云盘挂载的位置。

    claimName

    PVC的名称,用于绑定PVC。

  2. 执行以下命令,创建一个挂载了ENS云盘静态存储卷的应用并挂载PVC。

    kubectl apply -f web.yaml
  3. 在集群管理页左侧导航栏选择工作负载 > 有状态。

    在有状态页面可看到创建的Web应用,且应用能正常启动,说明ENS云盘已经挂载成功。

相关文章

ENS管理概述 2025-04-16 15:13

边缘节点服务ENS(Edge Node Service)基于运营商边缘节点和网络构建,一站式提供靠近终端用户、全域覆盖、弹性分布式算力资源,通过终端数据就近计算和处理,优化响应时延、中心负荷和整体成本。本文介绍阿里云ACK Edge集群如何管理ENS节点。

使用ENS云盘 2025-04-16 15:13

ENS云盘是在ACK Edge集群的ENS节点上使用的云盘。ACK Edge集群支持使用CSI插件创建ENS云盘静态存储卷和ENS云盘动态存储卷。本文介绍如何在CSI插件中挂载ENS云盘静态存储卷和ENS云盘动态存储卷。

使用ELB实现多地域服务暴露 2025-04-16 15:13

在Kubernetes集群中,需要通过Service使Pod应用能够从外部访问,从而解耦前端和后端的关联,实现松耦合的微服务设计。ACK Edge集群支持通过使用负载均衡类型的服务对外暴露应用,本文以边缘负载均衡ELB(Edge Load Balancer)为例,为您介绍如何使用ELB实现多地域下E

通过Annotation配置ELB 2025-04-16 15:13

通过Service YAML文件中的Annotation(注解),可以实现丰富的负载均衡功能。本文从边缘负载均衡(Edge Load Balancer,ELB)、监听和后端服务器组以及边缘弹性公网IP(边缘EIP)四种资源维度来介绍通过注解可以对ELB进行的常见配置操作。 注意事项

在ENS网络中使用Terway 2025-04-16 15:13

Terway Edge网络插件是ACK Edge集群提供的Underlay容器网络插件。本文介绍Terway Edge网络插件如何基于ENS弹性网卡提供容器网络通信。 背景信息

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号