Huawei DCS Provider
目录
概述主要功能集群管理能力基于 UI 的管理(Fleet Essentials)基于 YAML 的管理支持的 Kubernetes 版本架构概念和术语DCS 平台对象层级DCS 平台概念DCS SiteDCS ClusterDCS HostDCS VM FolderDCS Cluster FolderDCS VM TemplateDCS DatastoreDCS Datastore ClusterDCS Distributed Virtual Switch (DVS)DCS Port GroupDCS VolumeDCS Cloud CredentialCluster API 资源映射存储概念:Datastore、Datastore Cluster 和 Volume网络概念:DVS、Port Group 和 IP 标识字段与概念参考DCSCluster 字段DCSMachineTemplate / DCSMachine 字段DCSIpHostnamePool 字段要求文档概述
Huawei DCS Infrastructure Provider 可在 Huawei Datacenter Virtualization Solution (DCS) 平台上创建和管理 Alauda OS 集群。
DCS(Datacenter Virtualization Solution)是 Huawei 的虚拟化平台,提供企业级虚拟化能力。DCS Provider 与 DCS 集成,为 Kubernetes 集群管理虚拟机、网络和存储资源。
主要功能
- 虚拟机管理:在 DCS 平台上配置和管理 VM
- 网络配置:支持多 NIC 配置,并可自定义网络设置
- 存储管理:支持灵活的磁盘配置,可在多个数据存储上使用模板磁盘和基于 IP 槽位的持久磁盘
- 高可用性:内置对高可用控制平面部署的支持
- 自建 VIP:通过
alive运行时和 ACPv4.4+管理控制平面 VIP(DCSCluster.spec.controlPlaneLoadBalancer.type: internal)。在控制平面 Layer 2 网络中预留 IPv4 VIP,并使用 在 Huawei DCS 上创建集群 中的 YAML 工作流 - 滚动更新:自动执行滚动更新,实现零停机维护
- 升级数据保留:在滚动升级期间,可将声明的持久磁盘从旧 VM 分离,并重新连接到替换 VM,从而避免保留的节点本地数据随系统磁盘丢失
集群管理能力
DCS Provider 始终支持通过 Cluster API 清单进行基于 YAML 的集群管理。
当安装 Fleet Essentials 后,它还支持基于 UI 的集群管理。DCSIpHostnamePool 上的持久磁盘声明仍仅支持 YAML。
基于 UI 的管理(Fleet Essentials)
Fleet Essentials 升级边界
Fleet Essentials 1.0.4 及更高版本可以通过 CVO 请求 ACP 4.3 及更高版本的 Distribution Version 升级。它不会执行 DCS Kubernetes 和 Alauda OS 替换。有关第 2 阶段的 YAML 操作步骤,请参阅在 Huawei DCS 上升级 Kubernetes。Fleet Essentials 中的集群创建和常规节点池管理不受此边界影响。
Fleet Essentials 提供 UI 扩展锚点,使 Alauda Container Platform Infrastructure Provider for Huawei DCS 能够动态添加 DCS 专属页面。
安装 Fleet Essentials 后,您可以通过 Web UI 管理 DCS 集群。DCSIpHostnamePool 上的 persistentDisk 声明仍必须通过 YAML 清单管理:
基础设施资源管理:
- Cloud Credentials - 存储 DCS 平台访问凭证
- IP Pools - 管理 IP 地址分配和多 NIC 设置。
/var/cpaas等基于 IP 槽位的持久磁盘仍通过 YAML 管理 - Machine Templates - 定义控制平面和工作节点的 VM 规格,但不包括由池管理的持久磁盘
集群生命周期:
- 创建集群 - 用于引导式集群创建的 5 步向导工作流
- 通过 Overview、Nodes、Node Pools 和 Aligned Extensions 选项卡查看集群详细信息
- 升级集群 - 两阶段升级:Distribution Version → Kubernetes
- 通过确认对话框销毁集群
节点池管理:
- 查看控制平面和工作节点池
- 添加工作节点池,并配置副本数和发布策略
- 删除工作节点池
- 按节点池升级 Kubernetes 版本
- 查看控制平面节点池的详细 Conditions
基于 YAML 的管理
对于自动化和 GitOps 工作流,您可以使用 YAML 清单管理 DCS 集群。此工作流不依赖 Fleet Essentials:
- 定义基础设施资源(Secret、DCSIpHostnamePool、DCSMachineTemplate)
- 创建集群资源(KubeadmControlPlane、DCSCluster、Cluster)
- 管理工作节点(MachineDeployment、KubeadmConfigTemplate)
- 执行滚动更新和升级,并在节点替换期间保留已声明的持久磁盘
有关基于 YAML 的操作步骤,请参阅在 Huawei DCS 上创建集群。
支持的 Kubernetes 版本
DCS Provider 支持的 Kubernetes 版本以 OS 支持矩阵 中的定义为准。每个 Alauda OS 版本都包含特定的 Kubernetes 版本,必须使用对应的 Alauda OS 镜像创建 VM 模板。
架构
DCS Provider 实现了 Cluster API 基础设施提供程序规范:
- DCSCluster:表示 DCS 基础设施集群
- DCSMachine:表示单个虚拟机
- DCSMachineTemplate:定义用于创建机器的 VM 模板
- DCSIpHostnamePool:管理机器的 IP 和主机名分配
概念和术语
多个 Huawei DCS 平台概念的名称与 Cluster API 自定义资源名称十分相似。其中两个需要特别注意,因为它们的名称完全相同:DCS Cluster(DCS 平台上的物理主机池)与 DCSCluster 自定义资源(表示在 DCS 上运行的 Kubernetes 集群的 Cluster API 基础设施资源)并非同一对象。若将二者视为同一对象,会导致 DCSMachineTemplate 和 DCSCluster 配置错误。
本节列举了该 provider 引用的 DCS 平台概念,将每个概念映射到引用它的 Cluster API 资源或字段,并说明网络和存储的分层关系;这是最常见的配置错误来源。
DCS 平台对象层级
DCS 平台以层级结构组织对象。该 provider 使用以下层级(从上到下):
- DCS Site — 单个 DCS 部署的顶层范围。通过站点 ID 标识,例如
EC1C108C。 - 在站点内:
- DCS Cluster — 物理主机池。一个站点包含一个或多个 DCS Cluster。
- DCS VM Folder 和 DCS Cluster Folder — 分别用于对虚拟机和集群进行逻辑分组的组织标签。
- DCS Datastore 和 DCS Datastore Cluster — 存储容器及存储容器组。
- DCS Distributed Virtual Switch (DVS) — 覆盖整个站点的虚拟交换机。
- 在 DCS Cluster 内:
- DCS Host — 物理服务器(例如
CNA-01、CNA-02)。
- DCS Host — 物理服务器(例如
- 在 DCS DVS 内:
- DCS Port Group — 虚拟机 NIC 所连接的网络配置项。
- 与放置层级无关:
- DCS VM Template — 标记为模板的虚拟机,用作克隆的源镜像。
- DCS Volume — 在 DCS Datastore 上创建的持久磁盘。
该 provider 不拥有这些对象,而是通过自定义资源字段中的名称或 URN 引用它们。
DCS 平台概念
DCS Site
单个 DCS 部署的顶层容器。站点 ID 通过 DCSCluster.spec.site 提供,也存储在云凭证 Secret 中。该 provider 使用的所有 DCS API 路径都包含站点 ID(/service/sites/{siteId}/...)。
DCS Cluster
DCS 平台上的物理主机池。DCS 调度程序会将虚拟机放置到属于单个 DCS Cluster 的主机上。一个站点可以包含一个或多个 DCS Cluster;一个 DCS Cluster 包含一个或多个 DCS Host。DCS Cluster 名称在 DCS 门户中可见,并由 GET /service/sites/{siteId}/clusters API 返回。
名称 DCS Cluster 与 Cluster API 自定义资源 DCSCluster 冲突。请参阅下文的Cluster API 资源映射。
DCS Host
在 DCS Cluster 中注册的单台物理服务器。名称遵循 DCS 平台上的本地约定(例如 CNA-01)。虚拟机在主机上运行;DCS 调度程序会根据集群级策略(DRS、反亲和规则)和主机容量,选择承载新虚拟机的主机。该 provider 不会将虚拟机固定到特定的 DCS Host;DCSMachineTemplate 资源不提供主机绑定字段。
DCS VM Folder
DCS Site 内用于对虚拟机分组的组织标签。VM Folder 不影响计算资源放置;归入 VM Folder foo 的虚拟机仍会运行在属于某个 DCS Cluster 的 DCS Host 上。该 provider 通过 GET /service/sites/{siteId}/folder?type=1 查询 VM Folder。
必须先在 DCS 平台上创建 VM Folder,才能在 DCSMachineTemplate.spec.template.spec.location(使用 type: folder)中引用它们。
DCS Cluster Folder
用于对 DCS Cluster 本身分组的组织标签,由同一个 /folder 端点返回,但使用不同的 type 参数。该 provider 不会查询或引用 DCS Cluster Folder。此处列出这一概念,仅为避免与 DCS VM Folder 混淆。
DCS VM Template
DCS 平台上标记为模板的虚拟机(isTemplate=true)。该 provider 从此模板克隆以创建集群节点。VM Template 通过名称(DCSMachine.spec.vmTemplateName 的值)标识;该 provider 通过列出 GET /service/sites/{siteId}/vms?isTemplate=true&name=<name>,将名称解析为 URN。
VM Template 自带位于 DCS Datastore 上的磁盘及网络配置。克隆时,该 provider 会覆盖网络配置(NIC 端口组、自定义配置),但不会覆盖磁盘的存储类型。默认情况下,克隆出的虚拟机会继承模板所在的 DCS Cluster;有关跨集群使用,请参阅基础设施 → 高级:多集群部署。
DCS Datastore
DCS 平台上的存储容器,用于存放虚拟机磁盘。Datastore 可由 SAN、IPSAN、NAS、FusionStorage 或本地磁盘提供支持。存储后端决定一个 datastore 是仅对一个 DCS Cluster 可见,还是对多个 DCS Cluster 可见:SAN、IPSAN、NAS 和 FusionStorage 通常支持跨集群访问;本地磁盘则不支持。
磁盘规格通过 datastoreName 或 datastoreUrn 引用 Datastore;该 provider 会在发送克隆请求前将名称解析为 URN。
DCS Datastore Cluster
一组 DCS Datastore。磁盘规格通过 datastoreClusterName 引用 Datastore Cluster 时,DCS 调度程序会选择其中有可用容量的成员 datastore。如果 DCS 管理员已配置 datastore cluster,建议以这种方式声明存储,因为它能够应对单个 datastore 空间耗尽的情况。
DCS Datastore Cluster 不是 DCS Cluster。两者的名称都包含“cluster”,但底层概念不同:DCS Cluster 是主机池,DCS Datastore Cluster 是 datastore 池。阅读平台文档或与 DCS 管理员交流时,请注意这一区别。
DCS Distributed Virtual Switch (DVS)
DCS 平台上的虚拟交换机,覆盖一个或多个 DCS Host。虚拟机 NIC 连接到 DCS Port Group,而 DCS Port Group 又属于某个 DCS DVS。该 provider 通过 GET /service/sites/{siteId}/dvswitchs 查询 DVS。
DCS Port Group
DCS DVS 上的网络配置项。每个端口组都包含 VLAN 配置、安全策略及其他网络设置。该 provider 使用父 DVS URI,通过 GET {dvSwitchUri}/portgroups 查询端口组,并通过名称(portGroupName)或 URN(portGroupUrn)引用它们。
虚拟机 NIC 必须恰好连接到一个 DCS Port Group。其他 NIC 需要引用其他端口组。
DCS Volume
DCS 平台上的持久磁盘。Volume 位于 DCS Datastore 上,通过 URN 标识,例如 urn:sites:EC1C108C:volumes:9841。当 DCSIpHostnamePool.spec.pool[].persistentDisk[] 声明了在虚拟机替换后仍需保留的磁盘时,该 provider 会通过 POST /service/sites/{siteId}/volumes 创建 Volume,并通过 attachvol 操作将生成的 Volume 挂载到虚拟机。
DCS Volume 在概念上不同于 Kubernetes PersistentVolume。DCS Volume 是在 hypervisor 层挂载的 DCS 平台存储对象;Kubernetes PersistentVolume 是表示可供 pod 使用的存储的 Kubernetes API 对象。该 provider 仅管理 DCS Volume;集群内的 PersistentVolume 资源由工作负载的 CSI 驱动程序单独管理。
DCS Cloud Credential
该 provider 用于调用 DCS REST API 的身份验证材料。该 provider 会向 POST /service/session 发送 X-Auth-User 和 X-Auth-Key 标头以获取会话令牌,并在后续请求中使用返回的 X-Auth-Token 标头。凭证存储在 Kubernetes Secret 中,并由 DCSCluster.spec.credentialSecretRef 引用。Secret 包含 authUser、authKey、endpoint 和 site 键。
Cluster API 资源映射
下表用于区分名称与 Cluster API 自定义资源相似的 DCS 平台概念。
以下概念与任何 Cluster API 资源都不冲突,但由于名称中包含“cluster”,在内部容易混淆:
存储概念:Datastore、Datastore Cluster 和 Volume
DCS 平台提供了三个由该 provider 分别引用的存储相关概念:
- DCS Datastore 是单个存储容器。虚拟机磁盘固定到一个 DCS Datastore。
- DCS Datastore Cluster 是一组 DCS Datastore。引用 DCS Datastore Cluster 的虚拟机磁盘会放置在其中一个有可用容量的成员 datastore 上;成员由 DCS 调度程序选择。
- DCS Volume 是位于 DCS Datastore(或 DCS Datastore Cluster 的成员 datastore)上的持久磁盘对象。当
DCSIpHostnamePool声明持久磁盘时,该 provider 会创建 Volume 并将其挂载到虚拟机;这些 Volume 在虚拟机替换后仍会保留。
三者之间的关系:
DCSMachineTemplate在vmConfig.dcsMachineDiskSpec[]下声明一个或多个磁盘。每个磁盘绑定到特定的datastoreName或datastoreClusterName。这些模板级磁盘会随虚拟机一同创建和销毁。DCSIpHostnamePool条目可以声明一个或多个persistentDisk[]项。每一项绑定到特定的datastoreName或datastoreClusterName,该 provider 会创建相应的 DCS Volume,使其在虚拟机替换后仍然保留。
跨集群可见性由底层存储后端决定。SAN、IPSAN、NAS 和 FusionStorage datastore 通常对多个 DCS Cluster 可见;本地磁盘 datastore 仅对单个 DCS Cluster 可见。此可见性决定单个 DCS VM Template 是否可以克隆到多个 DCS Cluster。
网络概念:DVS、Port Group 和 IP 标识
基于 DCS 的 Kubernetes 集群的网络配置分为两个层级:
- DCS 侧网络配置(第 2 层):虚拟机 NIC 必须连接到 DCS Port Group,而该 Port Group 属于 DCS Distributed Virtual Switch。DVS 和 Port Group 是 DCS 平台对象,由 DCS 侧创建和管理。provider 通过名称(
dvSwitchName、portGroupName)或 URN(portGroupUrn)引用它们。 - 集群侧网络标识(第 3 层):分配给虚拟机的 IP 地址、子网掩码、网关、DNS 服务器和主机名不是 DCS 平台对象。它们在
DCSIpHostnamePool.spec.pool[]条目中声明(这是由集群 operator 所拥有的 Cluster API 资源),并在引导期间通过 cloud-init 或 Ignition 写入虚拟机。
这种划分有两个实际影响:
- DCS 平台团队负责管理 DVS 和 Port Group 定义。集群 operator 负责管理 IP 和主机名规划。两者通过
DCSIpHostnamePool资源进行协调,该资源引用 DCS 侧的 Port Group,同时声明集群侧的 IP 标识。 - provider 不会调用任何 DCS API 来分配或预留 IP 地址。集群 operator 编写
DCSIpHostnamePool条目时必须避免地址冲突。
Cluster API 资源 DCSIpHostnamePool 和 DCS 平台的 Port Group 是不同的对象。DCS 平台没有原生的“IP 池”概念;DCSIpHostnamePool 资源是记录每台虚拟机网络标识的唯一位置。
字段与概念参考
下表将最常用的自定义资源字段映射到它们引用的 DCS 平台概念,以及这些字段的值来源。
DCSCluster 字段
DCSMachineTemplate / DCSMachine 字段
DCSIpHostnamePool 字段
要求
-
具有 API 访问权限的 DCS 平台
-
具有 DCS administrator 角色的用户,可以是:
Interface interconnection user(默认),或Domain user(由 LDAP/AD 支持;需要由 DCS 管理员配置 DCS 域身份验证)。
有关选择标准和 DCS 端要求,请参阅凭证用户类型。
-
包含 Alauda OS 镜像的虚拟机模板。使用集群上安装的 ACP 版本所发布的 Alauda OS 镜像;请参阅下载 Alauda OS。
-
使用由池管理的持久磁盘时,需要使用
4.2.1或更高版本的 DCS VM 模板,因为安全关机和磁盘分离依赖 guest tools -
具备跨主机访问能力的共享存储
文档
有关使用 DCS Provider 的详细说明,请参阅: