在 Huawei Cloud Stack 上管理节点
本文介绍如何使用 Cluster API Machine 资源在 Huawei Cloud Stack 平台上管理工作节点。
要升级节点的 Kubernetes 版本,请参阅在 Huawei Cloud Stack 上升级 Kubernetes。
目录
先决条件概述使用 Web UI查看节点池添加工作节点池管理节点 IP 地址删除工作节点池使用 YAML扩缩工作节点添加工作节点移除工作节点更改机器基础设施更新引导模板验证故障排除查看控制器日志常见问题先决条件
重要先决条件
- 执行节点操作前,必须先部署控制平面。有关设置说明,请参阅创建集群。
- 确保您拥有 HCS 平台的适当访问权限和所需权限。
- 要管理
global集群本身的节点,必须先在global上安装 provider;请参阅管理 Alauda OS 集群上的节点。
使用本文档中的 YAML 示例时,仅将 <> 中的值替换为特定于环境的值。除非集群策略要求使用其他值,否则请保留其余字段。
概述
工作节点通过 Cluster API Machine 资源进行管理,从而以声明式和自动化的方式管理节点生命周期。一个工作节点池由以下四个资源构成:
- Machine Configuration Pool - 工作节点的网络设置
- Machine Template - VM 规格
- Bootstrap Configuration - 节点初始化设置
- Machine Deployment - 节点创建和管理的编排
您可以通过 Web UI 或 YAML 清单管理这些资源。Web UI 提供引导式体验,并且需要 Fleet Essentials;无需 Fleet Essentials 即可使用 YAML。
使用 Web UI
要求:此工作流需要 Fleet Essentials 1.0.2 或更高版本。没有该功能时,请使用使用 YAML部分中的 YAML 工作流管理节点池。
Node Pools 选项卡可用于查看控制平面和工作节点池、添加或删除工作节点池,以及编辑现有节点池的预留 IP 地址。
导航:Clusters → Clusters → 选择集群 → Node Pools 选项卡
查看节点池
Node Pools 选项卡以卡片形式显示 Control Plane Node Pool 和每个 Worker Node Pool。两种卡片类型包含相同的字段:
添加工作节点池
单击 Add Worker Node Pool 并完成对话框。字段与创建向导的第 5 步相同:节点池名称(带有 <cluster-name>- 前缀)、Flavor、Availability Zone、Machine Configs(主机名、网络、持久磁盘)、System Disk、Data Volumes、Replicas、Rollout Strategy 和 SSH Authorized Keys。节点池创建后,新节点会显示在 Nodes 选项卡中。
所选 Availability Zone 适用于新工作节点池中的每个节点。要将工作节点放置在其他区域,请创建单独的工作节点池并选择该区域;一个节点池不会自动将其副本分散到多个区域。下拉列表会禁用 HCS 报告为不可用的区域。有关自动选择、持久磁盘和控制平面放置限制,请参阅Availability Zone 放置。
管理节点 IP 地址
HCS 节点池中的每个节点都使用其子网中的一个预留静态 IP 地址。要更改节点池预留的地址(例如,在扩容节点池之前增加容量),请打开节点池卡片的操作菜单,然后选择 Update Config Pool 以打开 Manage IPs 对话框。
此对话框用于编辑节点池的 HCSMachineConfigPool 的机器配置。对于每个节点,您可以设置主机名、网络(每个网络包含一个从其子网中选择的 IP 地址以及该子网)和持久磁盘。IP 选择遵循与创建向导相同的规则:先选择子网,然后从列表中选择可分配的地址;已在使用的地址不会显示。
HCS 集群使用静态 IP 地址,不使用 DHCP。在扩容节点池之前,请在节点池中预留足够的地址——除非节点池为新节点提供地址,否则新节点无法启动。
删除工作节点池
打开 Worker Node Pool 卡片的操作菜单,选择 Delete,然后确认。
删除工作节点池会永久删除其中的所有节点以及底层 ECS 实例。请确保工作负载通过适当的副本机制能够承受这些节点的丢失。Control Plane Node Pool 无法删除。
使用 YAML
使用 Cluster API 清单管理工作节点。要使用 YAML 添加另一个工作节点池,请在集群创建页面按照部署工作节点中的步骤操作。
扩缩工作节点
工作节点扩缩允许您根据工作负载需求调整集群容量。
添加工作节点
增加工作节点数量以处理增加的工作负载。
操作步骤:
-
检查当前节点状态
-
扩展配置池
为其他节点向池中添加新的机器配置。如果新工作节点需要保留节点本地状态(例如
/var/cpaas),请在每个新配置中包含匹配的persistentDisks[]条目。修改节点池以包含新的 IP 条目,然后应用更改:
编辑节点池时,请保持所有现有的
configs[]条目及其已接受的persistentDisks[]条目不变,除非您有意追加新的磁盘插槽。 -
扩容 MachineDeployment
将
replicas字段更新为所需的节点数: -
监控扩容进度
移除工作节点
减少工作节点数量以降低集群容量。
数据丢失警告
缩容会移除工作节点及其 ECS 实例。模板拥有的 dataVolumes[] 不会保留。在 HCSMachineConfigPool.spec.configs[].persistentDisks[] 中声明的、由节点池管理的持久磁盘仍由节点池跟踪;只要相应的主机名条目仍保留在节点池中,这些磁盘就可以重复使用。请确保:
- 工作负载能够通过适当的副本机制承受节点丢失
- 未将关键数据仅存储在要移除的节点上
- 应用程序按照水平扩展方式设计
操作步骤:
-
缩容 MachineDeployment
-
监控移除进度
Cluster API 控制器将:
- 排空选定的节点(如果可能则驱逐 Pod)
- 从 HCS 平台删除底层 VM
- 移除机器资源
更改机器基础设施
要更改工作节点机器规格(CPU、内存、磁盘和 VM 镜像),请创建新的机器模板,并将 MachineDeployment 指向该模板。随后,工作节点会逐个替换。请按照以下步骤操作:
注意:HCS dataVolumes[] 在替换期间不会保留。要保留节点本地状态(例如 /var/cpaas),请在发布更新前将其声明在 HCSMachineConfigPool.spec.configs[].persistentDisks[] 中,并保留 MachineDeployment.spec.strategy.rollingUpdate.maxSurge: 0。如果您的集群仍在 HCSMachineTemplate.spec.template.spec.dataVolumes[] 中保留这些磁盘,请先完成将现有 Huawei Cloud Stack 集群迁移到由节点池管理的持久磁盘。
-
创建新的机器模板
复制现有的
HCSMachineTemplate并修改所需的值:imageName- VM 镜像flavorName- 实例类型rootVolume.size- 系统磁盘大小dataVolumes- 临时数据磁盘配置
如果需要添加新的、由节点池管理的持久磁盘,请先将其追加到工作节点的
HCSMachineConfigPool中。Provider 会创建或声明 EVS 磁盘,但运行中的 ECS 不会挂载该磁盘,直到滚动替换创建出替代工作节点。然后在应用前编辑
new-template.yaml:- 将
metadata.name更改为<new-template> - 不设置运行时身份字段,包括
spec.template.spec.providerID和spec.template.spec.serverId - 移除服务器生成的字段,例如:
metadata.resourceVersionmetadata.uidmetadata.creationTimestampmetadata.managedFieldsstatus
-
部署新模板
-
更新 MachineDeployment
修改
MachineDeployment以引用新模板: -
监控滚动更新
要更改控制平面节点的机器规格,请执行相同的步骤,并改为修补 KubeadmControlPlane.spec.machineTemplate.infrastructureRef.name。
更新引导模板
要更改工作节点的引导配置(例如 kubelet 设置或节点加入时运行的命令),请创建新的 KubeadmConfigTemplate,并将 MachineDeployment 指向该模板。就地修改现有模板不会发布到现有机器;只有新创建的机器会应用此更改。
-
导出现有模板
-
修改模板
编辑
new-bootstrap-template.yaml:- 将
metadata.name设置为新的唯一名称<new-bootstrap-template> - 移除服务器生成的元数据(
resourceVersion、uid、creationTimestamp、managedFields、kubectl.kubernetes.io/last-applied-configuration注解)以及整个status字段 - 编辑要更改的字段。保留 kubelet 修补文件
/etc/kubernetes/patches/kubeletconfiguration0+strategic.json的现有条目(包括证书路径),仅更改所需内容 - 对于 Kubernetes 1.35 或更高版本,将所需的 kubelet 修补设置添加到该文件中
- 将
-
应用新模板
-
更新 MachineDeployment
随后开始滚动替换工作节点:
验证
部署工作节点后,验证部署:
故障排除
查看控制器日志
常见问题
节点无法加入集群
- 验证 VM 模板与 Kubernetes 版本匹配
- 检查节点之间的网络连接
- 确保配置池中有可用条目
Machine 卡在预配阶段
- 检查 HCS 平台是否有可用资源
- 验证凭据和权限
- 查看控制器日志中的错误消息