华为 DCS 的基础设施资源

概述

在 Huawei DCS 上创建集群之前,您需要配置基础设施资源,包括云凭证、IP 池和机器模板。

您可以使用 Web UI 或 YAML 清单来管理基础设施资源。Web UI 提供带验证的引导式界面,而 YAML 则提供自动化能力。

INFO

命名空间要求 所有基础设施资源都必须部署在 cpaas-system 命名空间中,以确保它们能够作为业务集群与平台正确集成。

云凭证

云凭证用于存储集群操作所需的 DCS 平台访问信息。

使用 Web UI

前提条件

在创建云凭证之前,请确认以下 DCS 平台要求:

用户配置

  • 用户类型:必须为 Interface interconnection user
  • 角色:必须为 administrator

密码策略: 导航到 System ManagementRights ManagementRights Management Policy,并确认:

  • 策略Whether to modify the password of an interface interconnection user upon password resetting and first login
  • :必须设置为 No

如果设置为 Yes,用户在首次登录时将被强制修改密码,从而导致认证失败并引发集群创建失败。

创建云凭证

导航:集群 → 云凭证 → 创建云凭证 → 选择 Huawei DCS

表单字段

字段类型必填说明
Nametext凭证的唯一标识符(1-63 个字符,仅允许小写字母、数字和连字符)
Display Nametext用于便于识别的自定义描述
DCS EndpointURLDCS 平台 API 地址(必须以 http://https:// 开头)
UsernametextDCS 平台 API 用户登录名
PasswordpasswordDCS 平台 API 用户登录密码
SitetextVM 模板所在的站点(所有资源必须位于同一站点)

校验规则

  • Name 必须为 1-63 个字符,仅包含小写字母、数字和连字符,且必须以字母或数字开头和结尾
  • DCS Endpoint 必须是以 http://https:// 开头的有效 URL 格式

管理云凭证

查看凭证:导航到 集群 → 云凭证,查看所有已配置的凭证及其类型、创建时间和创建者。

更新凭证:单击凭证上的 Update 可修改 Display Name。当前版本不支持更新密码(计划在后续版本中支持)。

删除凭证:单击 Delete 可删除凭证。在对话框中确认删除。

使用 YAML

创建一个 Secret 资源来存储 DCS 认证信息:

dcs-secret.yaml
apiVersion: v1
data:
  authUser: <base64-encoded-auth-user>
  authKey: <base64-encoded-auth-key>
  endpoint: <base64-encoded-endpoint>
kind: Secret
metadata:
  name: <auth-secret-name>
  namespace: cpaas-system
type: Opaque

参数说明

参数说明
.data.authUserDCS 平台 API 用户登录名(base64 编码)
.data.authKeyDCS 平台 API 用户登录密码(base64 编码)
.data.endpoint带有 http 或 https 协议的 DCS 平台 API 地址(base64 编码)。注意:DCS 平台默认 API 端口为 7443(不是常见的 8443)。如果您的环境使用自定义端口,请与您的管理员确认。

示例

# Encode credentials
echo -n "admin" | base64
echo -n "your-password" | base64
echo -n "https://dcs.example.com:7443" | base64

# Apply the Secret
kubectl apply -f dcs-secret.yaml -n cpaas-system

IP 池

IP 池定义集群节点的网络配置(IP 地址、子网掩码、网关、DNS)。每个池可以包含多个节点条目,并且每个节点可以有多个网络接口配置。

使用 Web UI

前提条件

  • 已创建云凭证

创建 IP 池

导航:集群 → Virtual Machine → IP 池 → 创建 IP 池 → 选择凭证

表单结构

IP 池表单由一个 Pools 列表组成。每个 Pool 代表一个节点,并包含:

  1. Node IP(必填,每个 Pool 恰好一个)
  2. Additional NIC IPs(可选,每个 Pool 可多个)

Node IP 字段

字段类型必填说明
IPIP addressKubernetes 节点的 IP 地址
Subnet MaskCIDR网络的子网掩码
GatewayIP address网关 IP 地址
DNSIP addressDNS 服务器地址(多个地址用逗号分隔)
Hostnametext虚拟机的主机名
Machine NametextDCS 平台中的虚拟机名称
dvSwitch Namedropdown虚拟交换机名称(来自 DCS 平台)
Port Group NamedropdownPort Group 名称(来自 DCS 平台)

Additional NIC IPs 字段

字段类型必填说明
IPIP address非节点 IP 地址(例如存储网络)
Subnet MaskCIDR网络的子网掩码
GatewayIP address网关 IP 地址
DNSIP addressDNS 服务器地址
dvSwitch Namedropdown虚拟交换机名称(来自 DCS 平台)
Port Group NamedropdownPort Group 名称(来自 DCS 平台)

校验规则

  • 同一 IP 池内的 IP 地址必须唯一
  • IP 地址必须是有效的 IPv4 格式
  • 子网掩码必须是有效格式
  • IP 地址必须位于已配置的子网范围内
  • 网关必须是子网范围内有效的 IPv4 地址

提示

  • 至少需要一个节点条目
  • 每个节点必须且只能配置一个 Node IP
  • Additional NIC IPs 为多网卡场景可选,例如存储网络隔离

管理 IP 池

查看池:导航到 集群 → Virtual Machine → IP 池,查看所有已配置的池及其节点 IP 和创建时间。

更新池:单击 Update 可添加或删除节点条目并修改网络配置。

删除池:单击 Delete 可删除池。在对话框中确认删除。

使用 YAML

创建一个 DCSIpHostnamePool 资源:

dcs-ippool.yaml
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: DCSIpHostnamePool
metadata:
  name: <iphostname-pool-name>
  namespace: cpaas-system
spec:
  pool:
  - ip: "<ip-1>"
    mask: "<mask>"
    gateway: "<gateway>"
    dns: "<dns>"
    hostname: "<hostname-1>"
    machineName: "<machine-name-1>"
  - ip: "<ip-2>"
    mask: "<mask>"
    gateway: "<gateway>"
    dns: "<dns>"
    hostname: "<hostname-2>"
    machineName: "<machine-name-2>"
  - ip: "<ip-3>"
    mask: "<mask>"
    gateway: "<gateway>"
    dns: "<dns>"
    hostname: "<hostname-3>"
    machineName: "<machine-name-3>"

参数说明

参数类型说明必填
.spec.pool[].ipstring待创建虚拟机的 IP 地址
.spec.pool[].maskstring子网掩码
.spec.pool[].gatewaystring网关 IP 地址
.spec.pool[].dnsstringDNS 服务器 IP(使用 , 分隔多个服务器)
.spec.pool[].machineNamestringDCS 平台中的虚拟机名称
.spec.pool[].hostnamestring虚拟机主机名
WARNING

您必须配置不少于计划部署节点数量的机器信息。条目不足将导致节点无法部署。


机器模板

机器模板定义集群节点的虚拟机规格(VM 模板、CPU、内存、磁盘、网络)。每个机器模板都有一个 Type,用于确定其用途:

  • Control Plane:用于控制平面节点
  • Worker Node:用于工作节点

使用 Web UI

前提条件

  • 已创建 IP 池
  • 已在 DCS 平台中使用 MicroOS 镜像创建了 VM Template
  • 已将 ConfigMap YAML 应用到 global 集群

VM Template 和 ConfigMap

每个 MicroOS 版本都包含一个 ConfigMap YAML,用于将 VM 模板映射到 Kubernetes 版本。在创建机器模板之前,请先应用此 YAML:

apiVersion: v1
data:
  corednsTag: 1.12.4-v4.2.3
  etcdTag: v3.5.21-251117
  kubernetesVersion: v1.33.6
  vmImageVersion: MicroOS-5.5-v4.2.0
kind: ConfigMap
metadata:
  labels:
    cpaas.io/dcs-vm-template: microos5.5-4.2.0
    cpaas.io/distribution-version: v4.2.0
    cpaas.io/kubernetes-version: v1.33
  name: 420-dcs-vm-template
  namespace: cpaas-system

重要cpaas.io/dcs-vm-template 标签值必须与 DCS 平台中的 VM 模板名称一致。

创建机器模板

导航:集群 → Virtual Machine → 机器模板 → 创建机器模板 → 选择凭证

表单字段

字段类型必填说明
Nametext模板的唯一标识符(1-63 个字符,仅允许小写字母、数字和连字符)
TypedropdownControl Plane 或 Worker Node
VM Template Namedropdown来自 ConfigMap,显示 OS Version 和 Kubernetes Version
LocationdropdownDCS 平台位置(数据中心、机架等)
ResourcedropdownDCS 平台资源池或集群
Specs-CPU 和内存规格
Specs.CPUnumberCPU 核数(整数)
Specs.Memnumber内存大小,单位为 MB(列表视图中显示为 GB)
Disk-磁盘配置(见下文)
IP Pooldropdown指向现有 IP 池的引用

磁盘配置

磁盘配置因模板类型而异。

Control Plane 所需磁盘

挂载路径默认大小(GB)可删除
System Volume(template default)
/var/lib/etcd10
/var/lib/kubelet100
/var/lib/containerd100
/var/cpaas40

Worker Node 所需磁盘

挂载路径默认大小(GB)可删除
System Volume(template default)
/var/lib/kubelet100
/var/lib/containerd100
/var/cpaas40

您可以添加额外磁盘,但必须保留上述所有必需磁盘。

磁盘字段说明

字段类型说明
挂载路径text磁盘挂载的目录路径
磁盘大小number (GB)磁盘大小
Datastoredropdown类型:ClusterName 或 Name,然后从 DCS 平台中选择

VM Template 选择提示

TIP

如果多个 VM 模板具有相同的 Kubernetes 版本,请选择 OS 版本更新的模板,以便获得最新的安全更新和系统改进。

管理机器模板

查看模板:导航到 集群 → Virtual Machine → 机器模板,查看所有模板及其 VM Template Name、Resource、Location、Specs 和 IP Pool。

更新模板:单击 Update 可修改规格。请注意,创建后无法更改 Name 字段。

删除模板:单击 Delete 可删除模板。在对话框中确认删除。

使用 YAML

创建一个 DCSMachineTemplate 资源:

dcs-machinetemplate.yaml
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: DCSMachineTemplate
metadata:
  name: <machine-template-name>
  namespace: cpaas-system
spec:
  template:
    spec:
      vmTemplateName: <vm-template-name>
      location:
        type: folder
        name: <folder-name>
      resource: # Optional, if not specified, uses template defaults
        type: cluster # cluster | host
        name: <cluster-name>
      vmConfig:
        dvSwitchName: <dv-switch-name> # Optional
        portGroupName: <port-group-name> # Optional
        dcsMachineCpuSpec:
          quantity: <cpu-cores>
        dcsMachineMemorySpec: # MB
          quantity: <memory-mb>
        dcsMachineDiskSpec: # GB
        - quantity: 0
          datastoreClusterName: <datastore-cluster-name>
          systemVolume: true
        - quantity: 10
          datastoreClusterName: <datastore-cluster-name>
          path: /var/lib/etcd
          format: xfs
        - quantity: 100
          datastoreClusterName: <datastore-cluster-name>
          path: /var/lib/kubelet
          format: xfs
        - quantity: 100
          datastoreClusterName: <datastore-cluster-name>
          path: /var/lib/containerd
          format: xfs
        - quantity: 40
          datastoreClusterName: <datastore-cluster-name>
          path: /var/cpaas
          format: xfs
      ipHostPoolRef:
        name: <iphostname-pool-name>

参数说明

参数类型说明必填
.spec.template.spec.vmTemplateNamestringDCS 虚拟机模板名称
.spec.template.spec.locationobjectVM 将被创建的位置(如果未指定,则自动选择)
.spec.template.spec.location.typestringVM 创建位置类型(当前仅支持 "folder")是*
.spec.template.spec.location.namestringVM 创建文件夹名称是*
.spec.template.spec.resourceobjectVM 创建的计算资源选择(如果未指定,则自动选择)
.spec.template.spec.resource.typestring计算资源类型:cluster 或 host是*
.spec.template.spec.resource.namestring计算资源名称是*
.spec.template.spec.vmConfigobject虚拟机配置
.spec.template.spec.vmConfig.dvSwitchNamestring虚拟机交换机名称(未指定时使用模板默认值)
.spec.template.spec.vmConfig.portGroupNamestringPort group 名称(必须属于指定的交换机,未指定时使用模板默认值)
.spec.template.spec.vmConfig.dcsMachineCpuSpec.quantityintVM CPU 规格(核)
.spec.template.spec.vmConfig.dcsMachineMemorySpec.quantityintVM 内存大小,单位为 MB
.spec.template.spec.vmConfig.dcsMachineDiskSpec[]objectVM 磁盘配置
.spec.template.spec.vmConfig.dcsMachineDiskSpec[].quantityint磁盘大小,单位为 GB(系统盘为 0 时使用模板大小)
.spec.template.spec.vmConfig.dcsMachineDiskSpec[].datastoreClusterNamestring该磁盘对应的数据存储集群名称
.spec.template.spec.vmConfig.dcsMachineDiskSpec[].systemVolumebool是否为系统盘(只能有一个磁盘为 true)
.spec.template.spec.vmConfig.dcsMachineDiskSpec[].pathstring磁盘挂载目录(如果未指定,则不会挂载磁盘)
.spec.template.spec.vmConfig.dcsMachineDiskSpec[].formatstring文件系统格式
.spec.template.spec.ipHostPoolRef.namestring引用的 DCSIpHostnamePool 名称

*当父对象被指定时必填

WARNING

存储要求

数据存储跨主机访问 数据存储集群(datastoreClusterName)必须支持 DCS 平台中所有物理机器之间的跨主机访问。如果某个数据存储仅在特定主机上可用,那么当 DCS 平台尝试将 VM 调度到其他主机时,VM 创建将失败。

Ignition 的共享存储 如果您的数据存储不支持直接文件上传(Ignition 配置所需),您必须提供支持多主机挂载的共享存储解决方案,例如 NFS。

磁盘配置规则 您可以添加自定义磁盘,但必须保留示例中显示的必需系统盘和数据盘(systemVolume/var/lib/kubelet/var/lib/containerd/var/cpaas)。


资源关系

基础设施资源具有以下依赖关系:

Cloud Credential

IP Pool

Machine Template → references IP Pool

Cluster Creation

资源可复用性

  • 一个 Cloud Credential 可以用于多个集群
  • 可以为不同网络段创建多个 IP 池
  • 可以为不同节点类型和规格创建多个机器模板

下一步

配置完基础设施资源后: