管理storage-operator组件

为了进一步丰富存储功能,例如存储卷自动扩容、云盘变配、存储资源监控等,ACK提供了多个存储组件,并通过storage-operator组件对这些存储组件的生命周期进行统一管理。您可以通过修改ConfigMap自定义storage-operator组件的配置信息,完成各存储组件的部署与升级,降低研发和运维复杂性。

前提条件

已创建1.20及以上版本的ACK托管集群ACK专有集群,且存储插件类型为CSI,请参见创建集群手动升级集群

组件介绍

storage-operator在集群中默认安装,以Deployment的形式部署。storage-operator会基于自身镜像的默认组件配置和ConfigMap的自定义组件配置进行存储组件的部署与升级。

  1. 默认组件配置:storage-operator每个镜像版本发布时,都有默认的存储组件配置文件。

  2. 通过ConfigMap自定义配置:storage-operator运行时,会挂载一个用于指定存储组件配置的ConfigMap文件,并读取该配置。您可以通过ConfigMap指定版本信息、是否部署组件等配置。

  3. 整合配置:storage-operator会整合自定义配置和默认配置,综合判断是否部署与升级组件。

storage-operator会优先使用自定义的组件配置,当不存在自定义配置时,再使用默认配置。

目前,storage-operator默认包含存储组件如下。

  • storage-cnfs:负责CNFS提供的相关功能。

  • storage-controller:负责云盘变配、跨可用区迁移等。

  • storage-auto-expander:负责存储卷的自动扩容。

  • storage-monitor:提供存储资源监控的可观测能力。

image

配置组件信息

镜像默认配置

每个版本的storage-operator都有默认的组件配置。以v1.31.1版本为例,配置示例如下。

{
  "storage-auto-expander": {
    "install": "true",
    "type": "deployment",
    "imageTag": "v1.31.1",
    "imageRep": "acs/storage-auto-expander",
    "crdTmpl": "/acs/templates/storage-auto-expander/crd.yaml",
    "template": "/acs/templates/storage-auto-expander/install.yaml"
  },
  "storage-monitor": {
    "install": "true",
    "type": "deployment",
    "imageTag": "v1.31.1",
    "imageRep": "acs/storage-monitor",
    "template": "/acs/templates/storage-monitor/install.yaml",
    "svcTmpl": "/acs/templates/storage-monitor/service.yaml"
  },
  "storage-cnfs": {
    "install": "true",
    "type": "deployment",
    "imageTag": "v1.24.39-0e24b92-aliyun",
    "imageRep": "acs/storage-cnfs",
    "crdTmpl": "/acs/templates/storage-cnfs/crd.yaml",
    "template": "/acs/templates/storage-cnfs/install.yaml"
  },
  "storage-controller": {
    "install": "true",
    "type": "deployment",
    "imageTag": "v1.31.1",
    "imageRep": "acs/storage-controller",
    "template": "/acs/templates/storage-controller/install.yaml"
  }
}

默认配置中各组件定义的参数说明如下。

参数

说明

install

该组件是否需要部署,默认为false

imageTag

如部署该组件,默认使用的镜像版本。

imageRep

如部署该组件,默认使用的镜像名。

crdTmpl

是否需要部署CRD,该值表示CRD模板地址。为空时表示不部署CRD。

svcTmpl

是否需要部署Service,该值表示Service模板地址。

template

该组件的部署模板地址。

通过ConfigMap进行自定义配置

你可以通过ConfigMap自定义storage-operator的默认组件配置。自定义配置将覆盖默认配置中的对应值。

  • 部署配置参数,如上文镜像默认配置所示,定义了该组件是否部署、部署版本信息等信息。storage-operator根据这些参数进行组件的安装、升级。

  • 其余参数配置了对应组件的环境变量。例如,在下方示例中,SNAPSHOT_INTERVAL字段为storage-snapshot-manager的环境变量。

kind: ConfigMap
apiVersion: v1
metadata:
  name: storage-operator
  namespace: kube-system
data:
  storage-snapshot-manager: |
    {
      "install": "true",
      "imageTag": "v1.16.aaaa",
      "imageRep": "acs/storage-snapshot-manager",
      "template": "/acs/templates/storage-snapshot-manager/install.yaml",
      "SNAPSHOT_INTERVAL": "30"
    }
  storage-analyzer: '{"install": "false"}'

管理storage-operator组件

  • 如需验证storage-operator是否成功启动,可执行如下命令查看。

    kubectl get pods -n kube-system -lapp=storage-operator

    预期输出:

    NAME                                READY   STATUS    RESTARTS   AGE
    storage-operator-57bdfd7f56-kl86k   1/1     Running   0          12m
  • 如需升级组件版本,请参见以下流程。关于组件的变更记录,请参见storage-operator

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

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

    3. 定位storage-operator,根据页面提示完成组件的升级。