华为云 Stack 基础设施资源
目录
概览编写 YAML 之前凭证 Secret 输入计算值版本和组件基线网络库存多 NIC 约束控制平面 ELB 地址方案操作约束控制平面 HA 放置方案静态 IP 池方案池托管的持久盘值到 YAML 的映射后续步骤概览
在为 Huawei Cloud 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 administrator 处获取提供程序可识别的准确值。
计算值
在编写 HCSMachineTemplate 和 HCSMachineConfigPool 之前,请准备虚拟机镜像、flavor、可用区、临时数据卷布局以及持久盘布局。
注意: 租户管理员无法从 HCS UI 中检索提供程序可识别的 flavorName 和 availabilityZone 值。在编写清单之前,请先从 HCS administrator 处获取准确的 API 值。
版本和组件基线
仅将 OS Support Matrix 用于其明确列出的组件版本,例如受支持 Alauda OS 镜像的 Kubernetes、coredns、etcd 和 pause 版本。
OS Support Matrix 并不是所有 HCS 清单值的完整来源。在编写 YAML 之前,还需要获取经批准的发布基线,以便为容器镜像仓库、DNS 镜像仓库、Kube-OVN 版本、Kube-OVN join CIDR、Pod CIDR 和 Service CIDR 等值提供依据。如果你的发布版本尚未提供完整的基线来源,请使用平台或发布负责人针对你的环境验证过的值。
当你通过 Web UI 而不是 YAML 创建集群时,无需手动输入这些组件版本。向导会从你为 OS 镜像注册的 OS-release ConfigMap 中读取这些值。有关注册步骤和字段来源,请参见 OS Release Registration。
网络库存
在编写 HCSCluster 或 HCSMachineConfigPool 资源之前,请先准备完整的集群网络库存。
你的网络方案必须包括:
- 目标 VPC 名称
- 目标安全组名称
- 集群将使用的每个子网名称
- 每个子网的子网 ID 和 ELB 相关子网元数据
- 每个子网的 CIDR
- 每个子网的网关和 DNS 值
- 控制平面节点、worker 节点、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 相关的地址:
vipSubnetNamevipAddresselbVirsubnetL4Ips,且恰好包含两个 L4 IPelbVirsubnetL7Ips,且恰好包含两个 L7 IP- 可选的
vipDomainName
如果设置了 vipDomainName,请配置 HCS Cloud DNS Private Zones,使该域名已解析到 vipAddress。
操作约束
- 提供程序会创建 ELB 并启用 Hybrid Load Balancing,以便集群节点可以通过 ELB 地址访问 API server。
- 集群创建后,不要在 HCS ELB 上禁用 Hybrid Load Balancing。
- 不要在创建清单中写入
spec.controlPlaneEndpoint。控制器会在 ELB 就绪后填充该字段。
控制平面 HA 放置方案
对于多副本控制平面,你可以配置 HCS 提供程序创建并维护一个由提供程序拥有的 server group,用于控制平面 ECS 的放置。请在编写集群清单时通过 HCSCluster.spec.controlPlaneHA 启用此功能。
在启用该功能之前,请先规划放置策略:
该功能以集群为作用域,仅适用于控制平面机器,不会配置 worker 节点池。提供程序会创建 server group,将控制平面 ECS 创建请求附加到该 group,记录 HCSCluster.status.controlPlaneHA 中的 server group,并通过 ControlPlaneHAReady 条件报告进度。
对于现有集群,启用 HCSCluster.spec.controlPlaneHA 会创建并记录由提供程序拥有的 server group,但不会将已经运行中的控制平面 ECS 实例追溯加入该 group。只有在通过 os:scheduler_hints.group 创建控制平面 ECS 时,才会应用 server group 放置策略。要收敛现有集群,请启用 controlPlaneHA,等待 HCSCluster.status.controlPlaneHA.id,然后触发一次控制平面滚动替换,使替换后的 ECS 实例以该 server group 创建。在当前控制平面 ECS 成员被替换并在 group 中被观测到之前,ControlPlaneHAReady 可能保持为 False,原因是 ControlPlaneHAPending。
有关清单示例和验证命令,请参见 配置 HCSCluster 和 验证控制平面 HA。
静态 IP 池方案
本页重点介绍规划中的静态 IP 工作流。
在创建 HCSMachineConfigPool 资源之前,请先准备以下内容:
- 控制平面主机名和静态 IP
- worker 主机名和静态 IP(如果会创建 worker)
- 足够覆盖初始 replica 数量的条目
- 必须绑定到每个固定主机名的池托管持久盘
对于至少有三个 replica 的静态 IP 控制平面,推荐的升级路径使用 KubeadmControlPlane.spec.rolloutStrategy.rollingUpdate.maxSurge: 0。这种先缩容再扩容的方法通常不需要额外的控制平面 IP。如果你计划使用单控制平面、仅创建的拓扑(replicas: 1),请不要将该 rollout 设置复制到创建清单中。对于使用持久盘的池,请保持 maxSurge: 0,因为每个磁盘都绑定到一个固定主机名和槽位。
池托管的持久盘
在 HCSMachineConfigPool.spec.configs[].persistentDisks[] 中声明必须在虚拟机删除后重新创建时仍然保留的 HCS 磁盘。
将此模型用于 /var/cpaas、监控数据、日志数据或其他在滚动替换期间必须保留的节点本地状态。将 HCSMachineTemplate.spec.template.spec.dataVolumes[] 保留给可能随每个新 ECS 重新创建的临时磁盘。
持久盘字段说明:
更新规则:
- 不要在
HCSMachineConfigPool.spec.configs[].persistentDisks[]和HCSMachineTemplate.spec.template.spec.dataVolumes[]中声明相同的mountPath。 - 你可以向现有机器配置中追加新的
persistentDisks[]条目。提供程序会创建或认领 EVS 磁盘,但不会将磁盘热挂载到运行中的 ECS 中。请先触发一次maxSurge: 0的滚动替换,再期待新磁盘在 guest OS 内被格式化并挂载。 - 在提供程序接受持久盘条目后,不要删除或更改
slot、size、type、format或mountPath。这些字段定义了磁盘标识和认领契约。 - 你可以更新
mountOptions。该变更会在节点被替换并且替换后的虚拟机渲染其磁盘挂载时生效。 - 对于使用持久盘的池,请保持
KubeadmControlPlane.spec.rolloutStrategy.rollingUpdate.maxSurge: 0和MachineDeployment.spec.strategy.rollingUpdate.maxSurge: 0。
值到 YAML 的映射
完成准备检查清单后,请使用以下映射:
后续步骤
完成准备检查清单后:
- 按照 在华为云 Stack 上创建集群 编写控制平面和基础设施清单
- 按照 管理华为云 Stack 上的节点 添加或修改 worker 节点