为了进一步丰富存储功能,例如存储卷自动扩容、云盘变配、存储资源监控等,ACK提供了多个存储组件,并通过storage-operator组件对这些存储组件的生命周期进行统一管理。您可以通过修改ConfigMap自定义storage-operator组件的配置信息,完成各存储组件的部署与升级,降低研发和运维复杂性。
前提条件
组件介绍
storage-operator在集群中默认安装,以Deployment的形式部署。storage-operator会基于自身镜像的默认组件配置和ConfigMap的自定义组件配置进行存储组件的部署与升级。
默认组件配置:storage-operator每个镜像版本发布时,都有默认的存储组件配置文件。
通过ConfigMap自定义配置:storage-operator运行时,会挂载一个用于指定存储组件配置的ConfigMap文件,并读取该配置。您可以通过ConfigMap指定版本信息、是否部署组件等配置。
整合配置:storage-operator会整合自定义配置和默认配置,综合判断是否部署与升级组件。
storage-operator会优先使用自定义的组件配置,当不存在自定义配置时,再使用默认配置。
目前,storage-operator默认包含存储组件如下。
storage-cnfs:负责CNFS提供的相关功能。
storage-controller:负责云盘变配、跨可用区迁移等。
storage-auto-expander:负责存储卷的自动扩容。
storage-monitor:提供存储资源监控的可观测能力。
配置组件信息
镜像默认配置
每个版本的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"
}
}
默认配置中各组件定义的参数说明如下。
参数 | 说明 |
| 该组件是否需要部署,默认为 |
| 如部署该组件,默认使用的镜像版本。 |
| 如部署该组件,默认使用的镜像名。 |
| 是否需要部署CRD,该值表示CRD模板地址。为空时表示不部署CRD。 |
| 是否需要部署Service,该值表示Service模板地址。 |
| 该组件的部署模板地址。 |
通过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。
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
定位storage-operator,根据页面提示完成组件的升级。