华为云 Stack 基础设施资源

概述

在为华为云 Stack(HCS)集群编写 YAML 之前,请先准备好所有必需的 HCS 输入。本页列出了在填充任何 SecretHCSMachineConfigPoolHCSMachineTemplateKubeadmControlPlaneHCSCluster 清单之前必须准备好的值、来源和约束。

请将本页作为准备检查清单。完成后,请继续阅读 在华为云 Stack 上创建集群在华为云 Stack 上管理节点,了解清单工作流。

INFO

命名空间要求

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

在编写 YAML 之前

在创建或编辑任何集群清单之前,请先准备以下输入:

输入由谁使用来源YAML 之前是否必需说明
集群名称ClusterKubeadmControlPlaneHCSCluster、模板、池你的集群命名方案在所有相关资源中始终使用相同的集群名称
Kubernetes 版本和组件基线ClusterKubeadmControlPlane已批准的发布基线;仅对其列出的组件版本使用 OS 支持矩阵准备经过验证的 Kubernetes 版本、镜像仓库、DNS 镜像仓库和标签、etcd 镜像标签、Kube-OVN 版本、Pod CIDR、Service CIDR 和 Kube-OVN join CIDR
accessKeysecretKeyHCS 凭证 SecretHCS 我的设置 > 访问密钥在应用 Secret 之前,请先对这些值进行 Base64 编码
projectIDHCS 凭证 SecretHCS 我的设置 > 资源空间使用资源空间 ID,而不是显示名称
externalGlobalDomainHCS 凭证 SecretHCS 平台访问域使用提供程序应调用的 HCS 平台域
regionHCS 凭证 SecretHCS 管理员租户管理员无法从 HCS UI 中获取此值
imageNameHCSMachineTemplateHCS 镜像库存使用所选 MicroOS 镜像经过验证的 HCS 镜像名称
flavorNameHCSMachineTemplateHCS 管理员使用与 Flavor.Name 匹配的、由提供程序识别的 HCS API 值,而不是租户 UI 显示名称
availabilityZoneHCSMachineTemplateHCS 管理员使用与 ZoneName 匹配的、由提供程序识别的 HCS API 值,而不是租户 UI 显示名称
根卷和数据卷布局HCSMachineTemplate集群存储规划在编写模板之前,先规划磁盘大小和挂载点。在需要时包括 /var/lib/etcd/var/lib/kubelet/var/lib/containerd/var/cpaas
VPC 名称和安全组名称HCSClusterHCS 网络库存确认所引用的 VPC 和安全组已存在且可用
集群子网库存HCSClusterHCSMachineConfigPool、控制平面 ELBHCS 网络库存为集群将使用的每个子网准备子网名称、子网 ID、与 ELB 相关的子网元数据、CIDR、网关、DNS 值,以及规划好的空闲 IP 范围
控制平面和工作节点主机名及静态 IPHCSMachineConfigPoolHCS 子网规划对静态 IP 工作流而言是至少为每个计划中的从节点准备一条记录
vipAddressvipSubnetNameHCSCluster.spec.controlPlaneLoadBalancerHCS ELB 地址规划vipAddress 必须属于 vipSubnetName
elbVirsubnetL4IpselbVirsubnetL7IpsHCSCluster.spec.controlPlaneLoadBalancerHCS ELB 地址规划每个 L4 或 L7 条目必须且只能包含两个 IP
vipDomainNameHCSCluster.spec.controlPlaneLoadBalancerHCS Cloud DNS Private Zones推荐配置该域名,使其已经解析到 vipAddress
controlPlaneEndpointCluster.status / 派生的集群端点由控制器管理不要在创建清单中准备或写入此字段;控制器会在 ELB 就绪后填充它

凭证 Secret 输入

只有在收集齐所有必需值后,才创建 HCS 凭证 Secret

Secret 键含义获取位置
accessKeyHCS access key IDHCS 我的设置 > 访问密钥
secretKeyHCS secret access keyHCS 我的设置 > 访问密钥
projectIDResource Space IDHCS 我的设置 > 资源空间
externalGlobalDomainHCS 平台访问域用于 API 访问的 HCS 平台域
region提供程序使用的 HCS 地域 API 值HCS 管理员

说明: 租户管理员无法从 HCS UI 中检索 region。在对 Secret 进行编码之前,请先从 HCS 管理员处获取提供程序识别的准确值。

计算值

在编写 HCSMachineTemplate 之前,请准备好 VM 镜像、flavor、可用区和磁盘布局。

输入指导
imageName使用你要部署的 MicroOS 镜像对应的、经过验证的 HCS 镜像名称
flavorName使用与 Flavor.Name 匹配的、由提供程序识别的 HCS API 值。不要使用租户 UI 显示名称
availabilityZone使用与 ZoneName 匹配的、由提供程序识别的 HCS API 值。不要使用租户 UI 显示名称
根卷和数据卷提前规划系统盘和数据盘。控制平面模板通常需要 /var/lib/etcd/var/lib/kubelet/var/lib/containerd/var/cpaas。工作节点模板通常需要 /var/lib/kubelet/var/lib/containerd/var/cpaas

说明: 租户管理员无法从 HCS UI 中检索由提供程序识别的 flavorNameavailabilityZone 值。在编写清单之前,请先从 HCS 管理员处获取准确的 API 值。

版本和组件基线

仅对其明确列出的组件版本使用 OS 支持矩阵,例如受支持 MicroOS 镜像的 Kubernetes、coredns、etcd 和 pause 版本。

OS 支持矩阵并不是所有 HCS 清单值的完整来源。在编写 YAML 之前,还应获取经过批准的发布基线值,例如容器镜像仓库、DNS 镜像仓库、Kube-OVN 版本、Kube-OVN join CIDR、Pod CIDR 和 Service CIDR。如果你的发布尚未提供完整的基线来源,请使用平台或发布负责人为你的环境验证过的值。

网络库存

在编写 HCSClusterHCSMachineConfigPool 资源之前,请准备完整的集群网络库存。

你的网络规划必须包括:

  • 目标 VPC 名称
  • 目标安全组名称
  • 集群将使用的每个子网名称
  • 每个子网的子网 ID 和与 ELB 相关的子网元数据
  • 每个子网的 CIDR
  • 每个子网的网关和 DNS 值
  • 控制平面节点、工作节点、ELB VIP 以及 ELB L4/L7 虚拟子网 IP 的规划空闲 IP 范围

如果单个集群使用多个子网,这些子网必须属于同一个 VPC,并且必须允许集群节点彼此通信。

重要: HCSCluster.spec.network.subnets 是集群子网库存。HCSMachineConfigPoolvipSubnetNameelbVirsubnetL4Ips[].subnetNameelbVirsubnetL7Ips[].subnetName 引用的每个 subnetName 都必须已经存在于该列表中。

对于初始集群创建流程,控制器可以在集群变为 Ready 之前按名称解析现有子网。对于已存在的 Ready 集群,不要只追加子网名称。请添加完整的子网对象,至少包括 nameid,以及当该子网被控制平面 ELB 使用时的 neutronSubnetId。同时也要在库存中保留 cidrgatewayIpprimaryDNSsecondaryDNS,以确保集群子网列表完整。

多 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 相关的地址:

  • vipSubnetName
  • vipAddress
  • elbVirsubnetL4Ips,且必须恰好包含两个 L4 IP
  • elbVirsubnetL7Ips,且必须恰好包含两个 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 就绪后填充该字段。

静态 IP 池规划

本页重点介绍已规划的静态 IP 工作流。

在创建 HCSMachineConfigPool 资源之前,请准备以下内容:

  • 控制平面主机名和静态 IP
  • 工作节点主机名和静态 IP(如果会创建工作节点)
  • 足以覆盖初始从节点数量的条目

对于至少有三个从节点的静态 IP 控制平面,推荐的升级路径使用 KubeadmControlPlane.spec.rolloutStrategy.rollingUpdate.maxSurge: 0。这种先缩容再扩容的方式通常不需要额外的控制平面 IP。如果你计划采用单控制平面、仅创建的拓扑(replicas: 1),不要将该 rollout 设置复制到创建清单中。只有在你计划增加控制平面从节点数量或将 maxSurge 设为大于 0 时,才准备额外的主机名和 IP 槽位。

值到 YAML 的映射

在完成准备检查清单后,请使用以下映射:

已准备的输入YAML 字段
accessKeysecretKeyprojectIDexternalGlobalDomainregionSecret.data.*
imageNameflavorNameavailabilityZone、磁盘布局HCSMachineTemplate.spec.template.spec.*
控制平面和工作节点主机名及静态 IPHCSMachineConfigPool.spec.configs[]
VPC 名称、子网库存、安全组名称HCSCluster.spec.network.*
vipAddressvipSubnetNamevipDomainNameelbVirsubnetL4IpselbVirsubnetL7IpsHCSCluster.spec.controlPlaneLoadBalancer.*
Kubernetes 版本和组件基线KubeadmControlPlane.spec.versionCluster.spec.clusterNetwork.*、集群注解以及相关的 bootstrap 设置

后续步骤

完成准备检查清单后: