华为云 Stack 基础设施资源
概述
在为华为云 Stack(HCS)集群编写 YAML 之前,请先准备好所有必需的 HCS 输入。本页列出了在填写任何 Secret、HCSMachineConfigPool、HCSMachineTemplate、KubeadmControlPlane 或 HCSCluster 清单之前必须就绪的值、来源和约束。
请将本页作为准备检查清单。完成后,请继续阅读 在华为云 Stack 上创建集群 和 在华为云 Stack 上管理节点,了解清单编写流程。
命名空间要求
所有 HCS 基础设施资源都必须部署在 cpaas-system 命名空间中,以确保作为业务集群与平台正确集成。
在编写 YAML 之前
在创建或编辑任何集群清单之前,请准备以下输入:
凭证 Secret 输入
只有在收集到所有必需值之后,才创建 HCS 凭证 Secret。
对于未包含 schema 的现有凭证 Secret,可以不做任何更改并继续正常使用。只有当你的 HCS IAM 端点使用 http 而不是默认的 https 时,才设置 schema。
注意: 租户管理员无法从 HCS UI 中检索 region。在对 Secret 进行编码之前,请从 HCS 管理员处获取提供程序可识别的精确值。
计算值
在编写 HCSMachineTemplate 和 HCSMachineConfigPool 之前,请准备 VM 镜像、Flavor、可用区、临时数据卷布局以及持久化磁盘布局。
注意: 租户管理员无法从 HCS UI 中检索提供程序可识别的 flavorName 和 availabilityZone 值。在编写清单之前,请从 HCS 管理员处获取精确的 API 值。
版本和组件基线
仅将 OS 支持矩阵 用于其明确列出的组件版本,例如受支持的 Alauda OS 镜像的 Kubernetes、coredns、etcd 和 pause 版本。
OS 支持矩阵并不是所有 HCS 清单值的完整来源。在编写 YAML 之前,还应获取已批准的发布基线,例如容器镜像仓库、DNS 镜像仓库、Kube-OVN 版本、Kube-OVN join CIDR、Pod CIDR 和 Service CIDR 等值。如果你的版本尚未发布完整的基线来源,则应使用平台或版本负责人为你的环境验证过的值。
网络库存
在编写 HCSCluster 或 HCSMachineConfigPool 资源之前,请准备完整的集群网络库存。
你的网络规划必须包括:
- 目标 VPC 名称
- 目标安全组名称
- 集群将使用的每个子网名称
- 每个子网的子网 ID 和与 ELB 相关的子网元数据
- 每个子网的 CIDR
- 每个子网的网关和 DNS 值
- 控制平面节点、工作节点、ELB VIP 以及 ELB L4/L7 虚拟子网 IP 的计划空闲 IP 范围
如果单个集群使用多个子网,则这些子网必须属于同一个 VPC,并且必须允许集群节点彼此通信。
重要: HCSCluster.spec.network.subnets 是集群子网库存。HCSMachineConfigPool、vipSubnetName、elbVirsubnetL4Ips[].subnetName 和 elbVirsubnetL7Ips[].subnetName 引用的每个 subnetName 都必须已存在于该列表中。
对于初始集群创建流程,控制器可以在集群变为 Ready 之前按名称解析现有子网。对于已处于 Ready 的现有集群,不要只附加一个子网名称。请添加完整的子网对象,至少包含 name、id,以及当该子网被控制平面 ELB 使用时的 neutronSubnetId。同时还要在库存中保留 cidr、gatewayIp、primaryDNS 和 secondaryDNS,以确保集群子网列表保持完整。
多 NIC 约束
多个 NIC 在 HCSMachineConfigPool.spec.configs[].networks[] 中声明。每个 networks[] 条目只为一个 NIC 选择一个子网和一个静态 IP。
当前提供程序不允许你声明:
- 每个 NIC 的角色或用途,例如管理、服务或存储流量
- 特定 NIC 的默认网关
- 静态路由或路由度量
- 按 NIC 配置的 DNS 设置
请将当前的多 NIC 能力视为 NIC 连接以及子网和静态 IP 选择。
控制平面 ELB 地址规划
HCS 提供程序会自动创建控制平面 Elastic Load Balance(ELB)。在编写 HCSCluster 之前,请先规划 ELB 输入。
本文档使用固定地址 ELB 工作流。在编写 HCSCluster 之前,请准备所有与 ELB 相关的地址:
vipSubnetNamevipAddress- 恰好两个 L4 IP 的
elbVirsubnetL4Ips - 恰好两个 L7 IP 的
elbVirsubnetL7Ips - 可选的
vipDomainName
如果设置了 vipDomainName,请配置 HCS Cloud DNS Private Zones,使该域名已解析到 vipAddress。
操作约束
- 提供程序会创建 ELB,并启用 Hybrid Load Balancing,使集群节点能够通过 ELB 地址访问 API server。
- 集群创建后,不要在 HCS ELB 上禁用 Hybrid Load Balancing。
- 不要在创建清单中写入
spec.controlPlaneEndpoint。控制器会在 ELB 就绪后填充该字段。
静态 IP 池规划
本页重点介绍计划中的静态 IP 工作流。
在创建 HCSMachineConfigPool 资源之前,请准备以下内容:
- 控制平面主机名和静态 IP
- 工作节点主机名和静态 IP(如果会创建工作节点)
- 足以覆盖初始副本数的条目
- 必须绑定到每个固定主机名的任何池管理持久化磁盘
对于至少有三个副本的静态 IP 控制平面,推荐的升级路径使用 KubeadmControlPlane.spec.rolloutStrategy.rollingUpdate.maxSurge: 0。这种先缩容再扩容的方式通常不需要额外的控制平面 IP。如果你计划的是单控制平面、仅创建型拓扑(replicas: 1),不要把该 rollout 设置复制到创建清单中。对于使用持久化磁盘的池,请保持 maxSurge: 0,因为每个磁盘都绑定到一个固定主机名和一个槽位。
池管理的持久化磁盘
在 HCSMachineConfigPool.spec.configs[].persistentDisks[] 中声明必须在 VM 删除后重建时仍然保留的 HCS 磁盘。
将此模型用于 /var/cpaas、监控数据、日志数据或其他必须在滚动替换期间保留的节点本地状态。将 HCSMachineTemplate.spec.template.spec.dataVolumes[] 保留给可在每次新 ECS 创建时重建的临时磁盘。
持久化磁盘字段说明:
更新规则:
- 不要在
HCSMachineConfigPool.spec.configs[].persistentDisks[]和HCSMachineTemplate.spec.template.spec.dataVolumes[]中同时声明相同的mountPath。 - 你可以向现有机器配置中追加新的
persistentDisks[]条目。提供程序会创建或认领 EVS 磁盘,但不会将该磁盘热挂载到运行中的 ECS。在你期望新磁盘在来宾操作系统内被格式化并挂载之前,请使用maxSurge: 0触发滚动替换。 - 在提供程序接受持久化磁盘条目后,不要删除或更改
slot、size、type、format或mountPath。这些字段定义了磁盘标识和认领契约。 - 你可以更新
mountOptions。该更改会在节点被替换且替换后的 VM 渲染其磁盘挂载时生效。 - 对于使用持久化磁盘的池,请保持
KubeadmControlPlane.spec.rolloutStrategy.rollingUpdate.maxSurge: 0和MachineDeployment.spec.strategy.rollingUpdate.maxSurge: 0。
值到 YAML 的映射
完成准备检查清单后,请使用以下映射:
下一步
完成准备检查清单后:
- 按照 在华为云 Stack 上创建集群 编写控制平面和基础设施清单
- 按照 在华为云 Stack 上管理节点 添加或修改工作节点