进阶 docs.cubesandbox.com 2026-10-08 23:44:25 · 6 阅读

第18章 节点相关操作

节点相关操作 ​本页说明 CubeSandbox 集群的三类主要计算节点操作:增加节点、隔离节点和删除节点。日常节点管理可以使用控制节点上的 cubeopscli 或 WebUI 节点详情页。以下示例默认 CubeOps 地址为 127.0.0.1:3010;多机部署时请替换为控制面 IP。操作前后可以通过以下命令确认节点 ID 和当前状态:bashcubeopscli node list # 查询单个节点 cubeopscli node list --hostid 增加节点 ​增加计算节点的过程是安装计算面组件,并让 Cubelet 向 CubeOps 注册。系统没有单独的 node add 命令;计算节点服务启动后会自动完成注册。前置条件 ​已有使用相同 CubeSandbox 发布包安装的可用控制节点。计算节点满足硬件和软件要求。计算节点可以访问 CubeOps 的 3010 端口。计算节点可以访问集群的 S3 兼容存储。使用内置 MinIO 时,需要能够访问控制节点的 9000 端口。操作步骤 ​将控制节点使用的同一份发布包复制到计算节点并解压。复制环境配置模板,然后设置计算节点角色、节点 IP 和控制面地址:bashcp env.example .env ONE_CLICK_DEPLOY_ROLE=compute CUBE_SANDBOX_NODE_IP=<当前节点IP> ONE_CLICK_CONTROL_PLANE_IP=<控制面IP>(可选但强烈建议)从控制节点复制 CUBE_S3_* 到本机 .env:bash# 在控制节点执行,把输出拷贝到计算节点 .env grep '^CUBE_S3_' /usr/local/services/cubetoolbox/.one-click.env也可指向其他共享的 S3 兼容存储。缺失时仅告警并继续安装,但 S3 卷插件不可用,安装结束时会再次提醒。安装计算节点:bashsudo ./install-compute.sh检查本地服务:bashsudo ./quickcheck.sh在控制节点确认新节点已经注册并处于健康状态:bashcubeopscli node list将需要的模板分发到新节点。根据模板状态和部署方式,可对目标节点执行 template redo,或者重新构建模板。完整的环境变量、安装行为、调度配置和故障排查请参阅多机集群部署。隔离节点 ​隔离会临时阻止 CubeMaster 向指定计算节点调度新沙箱,行为类似 Kubernetes cordon:节点仍可保持健康,已有沙箱继续运行。维度隔离后的行为新沙箱调度不再选择该节点;如果没有其他可调度节点,创建会失败。已有沙箱不受影响,不会自动销毁或迁移。节点健康状态与隔离相互独立,隔离节点仍可显示 healthy=true。Cubelet 心跳继续正常,节点侧不能自行清除隔离状态。CubeOps 使用以下保留 label 记录隔离状态:textcube.cloud.tencentcloud.com/scheduling-disabled=true普通 labels API 和 Cubelet 注册都不能设置或清除该 label。隔离不等于清空节点隔离不会驱逐已有沙箱。执行会中断进程或网络的维护操作前,需要先隔离节点,再主动销毁该节点上的沙箱。隔离 ​bash# 隔离单个节点 cubeopscli node isolate # 隔离多个节点 cubeopscli node isolate 隔离操作是幂等的。执行成功后,确认 SCHEDULING_DISABLED 为 true:bashcubeopscli node list进行破坏性维护前,建议至少等待 60 秒,让正在进行的调度和创建窗口结束。自动化场景可以使用带 JWT 的 CubeOps API:bashcurl -X PUT "http://127.0.0.1:3010/api/v1/nodes//isolation" \ -H "Authorization: Bearer $TOKEN"取消隔离 ​维护完成后,允许节点重新接收新沙箱:bashcubeopscli node unisolate 也可以使用 API:bashcurl -X DELETE "http://127.0.0.1:3010/api/v1/nodes//isolation" \ -H "Authorization: Bearer $TOKEN"节点重新投入使用前,确认 SCHEDULING_DISABLED 已变为 false。Kubernetes 计算面升级时,请在隔离并清空节点后继续参考 Kubernetes 升级。删除节点 ​删除节点会从 CubeOps 移除节点注册信息、状态、组件版本元数据和指标缓存。它不会停止节点进程、销毁沙箱、删除磁盘或删除 Kubernetes Node 对象。删除前必须隔离并清空节点CubeOps 只允许删除已经隔离且没有沙箱的节点。删除操作本身不会隔离节点,也不会销毁节点上的负载。推荐顺序 ​隔离目标节点。等待至少 60 秒,让正在进行的调度结束。销毁该节点上的全部沙箱。停止或退役 Cubelet,避免节点立即重新注册。删除节点记录。确认节点已从列表中消失。使用 cubeopscli 删除 ​bash# 删除单个节点 cubeopscli node rm # rm 是 delete 的别名;支持一次删除多个节点 cubeopscli node delete 批量删除会依次尝试所有节点。某个节点失败不会阻止后续操作,命令结束时会返回错误并列出失败节点。如果计算节点不可达,CubeOps 无法校验其沙箱清单,可以使用强制删除:bashcubeopscli node rm --force --force 只跳过沙箱清单校验,目标节点仍然必须处于隔离状态。使用内部 API 删除 ​bashcurl -X DELETE "http://127.0.0.1:3010/internal/v1/nodes/" # 节点不可达时跳过沙箱清单校验 curl -X DELETE "http://127.0.0.1:3010/internal/v1/nodes/?force=true"常见错误包括:404 Not Found:节点不存在。409 Conflict:节点未隔离,或者仍有沙箱。502 Bad Gateway:CubeMaster 无法校验沙箱清单;请恢复连接或明确使用强制删除。删除不是永久禁止注册。如果 Cubelet 仍在运行或再次启动,它可以使用相同节点 ID 重新注册为新节点记录。相关文档 ​多机集群部署CubeMaster 调度器配置服务管理与日志Kubernetes 升级

评论 (0)