Skip to content

工作空间管理

特性:

  • Namespace 可视化管理: 工作空间与 Kubernetes Namespace 一一对应
  • 多维度资源配额: 支持 CPU、内存、GPU、存储、Pod 等资源配额设置
  • 细粒度限制策略: Pod 级别、容器级别的资源限制与默认值配置
  • 实时监控面板: 资源使用、配额消耗、指标趋势、Pod 排行榜
  • 跨项目迁移: 支持工作空间在项目间无缝迁移

核心概念

工作空间是 Kube Nova 中对 Kubernetes Namespace 的抽象封装。每个工作空间对应集群中的一个 Namespace,是项目内资源隔离和管理的基本单位。

自动同步与默认项目

当 Kube Nova 平台同步集群数据时,会自动发现集群中已存在的 Namespace。这些通过同步发现的 Namespace 会被自动归属到「默认项目」下,作为未分配的工作空间进行管理。

这种设计确保了集群中所有的 Namespace 都能被平台纳管,不会出现"漏管"的情况。但在实际使用中,建议将这些自动同步的工作空间迁移到对应的业务项目中,以便进行更精细的资源管理和成本核算。

工作空间与资源池的关系

工作空间必须创建在项目的资源池内。一个资源池(项目在某集群上的配额)可以包含多个工作空间,所有工作空间共享该资源池的配额上限。

项目 (Project)
  └── 资源池 (集群 A 的配额)
        ├── 工作空间 1 (namespace-prod)
        ├── 工作空间 2 (namespace-staging)
        └── 工作空间 3 (namespace-dev)

工作空间列表

操作路径:项目中心 → 工作空间

页面布局

页面顶部提供筛选和操作区域:

集群筛选 通过下拉框选择要查看的目标集群,切换后显示该集群下当前项目的所有工作空间。

项目与集群信息 显示当前项目名称、所选集群名称,以及资源池的整体使用情况(CPU、内存、存储使用百分比),便于快速了解配额消耗状态。

视图切换 页面右上角提供「卡片视图」和「列表视图」两种展示模式,可根据偏好选择。

工作空间卡片

每个工作空间以卡片形式展示,包含以下信息:

名称与标识 显示工作空间的显示名称和对应的 Kubernetes Namespace 名称。

资源配额 展示该工作空间分配的资源配额:

  • CPU:分配的 CPU 核数
  • 内存:分配的内存容量(GiB)
  • 存储:分配的临时存储容量(GiB)
  • GPU:分配的 GPU 卡数
  • Pod:允许创建的 Pod 数量上限

创建时间 显示工作空间的创建日期。

状态指示 卡片底部的状态点表示工作空间的健康状态。

操作菜单

点击工作空间卡片右上角的更多按钮(⋯),可展开操作菜单:

查看详情 进入工作空间详情页,查看完整的配置信息和资源使用情况。

监控 跳转到工作空间监控面板,查看实时资源使用和历史趋势。

编辑配置 修改工作空间的资源配额和限制策略。

迁移空间 将工作空间迁移到其他项目。

删除 删除工作空间及其对应的 Namespace。


迁移工作空间

迁移功能用于将工作空间从当前项目转移到其他项目,这是管理自动同步资源的关键操作。

使用场景

场景一:整理自动同步的资源 集群同步后,已存在的 Namespace 会被归属到默认项目。通过迁移功能,可以将这些工作空间分配到正确的业务项目中。

场景二:业务调整 当组织架构调整或业务归属变更时,可以将工作空间迁移到新的项目下。

场景三:资源重新规划 在进行资源池调整时,可能需要将工作空间迁移到配额更充足的项目。

迁移前提条件

执行迁移操作前,请确保满足以下条件:

目标项目拥有对应集群的资源池 工作空间只能迁移到在同一集群上有资源池的项目。如果目标项目没有该集群的资源池,需要先为目标项目分配资源。

目标项目资源配额充足 目标项目的资源池必须有足够的剩余配额来容纳被迁移的工作空间。系统会在迁移时校验配额,如果配额不足,迁移将被拒绝。

迁移操作步骤

操作路径:工作空间卡片 → 更多菜单(⋯)→ 迁移空间

  1. 在弹出的「迁移工作空间」对话框中,系统会显示迁移说明,请仔细阅读。

  2. 确认「当前工作空间」和「当前项目」信息无误。

  3. 在「目标项目」下拉框中选择要迁移到的目标项目。下拉列表只会显示在当前集群上有资源池的项目。

  4. 点击「确认迁移」按钮完成操作。

迁移说明

迁移注意事项

  • 工作空间将从当前项目迁移到目标项目
  • 迁移过程中会更新所有相关资源配额
  • 请确保目标项目有足够的资源配额
  • 迁移操作不可撤销,请谨慎操作

迁移原理

迁移操作是纯平台层的逻辑处理,不会对 Kubernetes 集群产生任何影响。具体来说:

不变的内容 Kubernetes 集群中的 Namespace 及其内部的所有资源(Pod、Deployment、Service 等)保持不变,工作负载不会中断。

变更的内容 平台数据库中工作空间与项目的关联关系会被更新,资源配额的归属会从源项目转移到目标项目。

这种设计确保了迁移操作的安全性,即使在生产环境中执行迁移,也不会影响正在运行的业务。


创建工作空间

创建工作空间的流程分为四个步骤:基础信息 → 资源配额 → 限制策略 → 确认信息。

操作路径:项目中心 → 工作空间 → 点击右上角「+」按钮

创建前提条件

要在某个集群上创建工作空间,必须满足以下条件:

项目已分配该集群的资源池 项目必须拥有目标集群的资源配额,才能在该集群上创建工作空间。

资源配额充足 资源池中需有足够的剩余配额来满足新工作空间的资源需求。

用户权限 操作用户需具有项目管理员权限或工作空间创建权限。

步骤一:基础信息(必填)

配置工作空间的基本标识信息。

工作空间名称(必填):输入工作空间的显示名称,用于在平台中标识和管理。支持中英文,最多 100 字符。例如:开发环境生产环境测试环境 等。

命名空间(必填):输入对应的 Kubernetes Namespace 名称。命名规则如下:

  • 必须以小写字母开头
  • 只能包含小写字母(a-z)和连字符(-)
  • 必须以字母结尾
  • 例如:dev-namespaceprod-envapp-staging

描述信息(可选):详细描述工作空间的用途、负责人、相关项目等信息,最多 500 字符。

填写完成后,点击「下一步」进入资源配额配置。

步骤二:资源配额(必填)

资源配额配置决定了工作空间可使用的资源上限,是创建工作空间的核心步骤。

集群资源概览

页面顶部的「集群资源概览」区域实时显示当前资源池的配额使用情况,帮助您了解可分配空间:

  • CPU:已使用/总配额(核),进度条显示使用比例
  • 内存:已使用/总配额(GiB)
  • 存储:已使用/总配额(GiB)
  • Pods:已使用/总配额(个)
  • GPU:已使用/总配额(核)

进度条颜色指示配额状态:绿色表示充足,黄色表示紧张,红色表示即将耗尽。

基础资源配置

设置工作空间的计算和存储资源配额:

CPU 配额(必填):设置工作空间可使用的 CPU 核数上限。输入框下方显示资源池的可用余量。单位可选择「核」或「毫核」。

内存配额(必填):设置工作空间可使用的内存上限。单位可选择 Gi(GiB)、Mi(MiB)等。

存储配额(可选):设置临时存储(ephemeral-storage)的配额上限。

GPU 配额(可选):设置工作空间可使用的 GPU 卡数。如果资源池没有 GPU 配额,此项将显示可用为 0。

对象资源限制

设置各类 Kubernetes 资源对象的数量限制,防止单个工作空间创建过多资源对象。

工作负载类

  • Pod 数量(必填):工作空间内允许创建的 Pod 总数上限
  • Deployment:部署数量限制
  • StatefulSet:有状态集数量限制
  • DaemonSet:守护进程集数量限制
  • Job:任务数量限制
  • CronJob:定时任务数量限制

网络资源类

  • Service:服务数量限制
  • Ingress:入口资源数量限制
  • LoadBalancer:负载均衡器数量限制
  • NodePort:NodePort 服务数量限制

配置与存储类

  • ConfigMap:配置映射数量限制
  • Secret:密钥数量限制
  • PVC:持久化存储卷声明数量限制
  • 临时存储:临时存储总容量限制

每个输入框下方会显示资源池的可用余量,帮助您合理分配资源。

步骤三:限制策略(选填)

限制策略用于设置 Pod 和容器级别的资源边界,通过 Kubernetes LimitRange 机制实现。这一步骤是可选的,但建议配置以确保资源使用的可控性。

Pod 级别限制

设置单个 Pod 可申请的资源范围:

Pod 最大 CPU:单个 Pod 可使用的最大 CPU 核数。例如设置为 8 核,则任何 Pod 的 CPU limits 不能超过 8 核。

Pod 最大内存:单个 Pod 可使用的最大内存。例如设置为 16 GiB。

Pod 最大临时存储:单个 Pod 可使用的最大临时存储容量。

Pod 最小 CPU:Pod 必须请求的最小 CPU 量。例如设置为 10 毫核,则所有 Pod 的 CPU requests 至少为 10m。

Pod 最小内存:Pod 必须请求的最小内存量。

Pod 最小临时存储:Pod 必须请求的最小临时存储量。

容器级别限制

设置单个容器可申请的资源范围:

容器最大 CPU:单个容器可使用的最大 CPU。例如设置为 4 核。

容器最大内存:单个容器可使用的最大内存。例如设置为 8 GiB。

容器最大临时存储:单个容器可使用的最大临时存储。

容器最小 CPU:容器必须请求的最小 CPU。例如设置为 10 毫核。

容器最小内存:容器必须请求的最小内存。例如设置为 64 MiB。

容器最小临时存储:容器必须请求的最小临时存储。

容器默认资源

当 Pod 或容器未指定资源请求和限制时,系统会自动应用这些默认值:

默认 CPU 限制:未指定时的默认 CPU limit。例如设置为 1 核。

默认内存限制:未指定时的默认内存 limit。例如设置为 1 GiB。

默认临时存储限制:未指定时的默认临时存储 limit。

默认 CPU 请求:未指定时的默认 CPU request。例如设置为 10 毫核。

默认内存请求:未指定时的默认内存 request。例如设置为 100 MiB。

默认临时存储请求:未指定时的默认临时存储 request。

限制策略的作用

配置限制策略可以防止以下问题:

  • 单个 Pod/容器申请过多资源,影响其他工作负载
  • 开发者忘记设置资源请求,导致调度问题
  • 资源使用无约束,难以进行容量规划

步骤四:确认信息

确认所有配置信息无误后,点击「创建」按钮完成工作空间创建。

创建成功后:

  • Kubernetes 集群中会创建对应的 Namespace
  • ResourceQuota 资源会被自动创建并应用配额限制
  • LimitRange 资源会被自动创建并应用限制策略(如果配置了)
  • 工作空间会出现在工作空间列表中

工作空间监控

工作空间监控提供对 Namespace 级别资源使用的实时监控和历史分析。

操作路径:工作空间卡片 → 更多菜单(⋯)→ 监控

监控面板概览

监控页面顶部显示工作空间的基本状态信息:

状态标识 显示工作空间的运行状态(Active/Inactive)。

健康分数 基于资源使用、Pod 状态等多维度指标计算的健康评分(满分 100)。

当前时间 显示监控数据的采集时间。

监控视图

监控页面提供四个维度的监控视图,通过标签页切换:

资源监控

展示工作空间的核心资源使用情况:

CPU 使用率 显示 CPU 的实时使用百分比和负载情况(Load)。

内存使用 显示内存使用百分比和具体用量(已用/总量)。

磁盘使用 显示存储资源的使用百分比。

网络流量 显示入站(接收)和出站(发送)的网络流量速率。

Pod 状态 显示 Pod 总数和正在运行的 Pod 数量。

页面下方提供资源使用趋势图,展示 CPU、内存等指标的历史变化,可以查看当前值、使用率、平均值和峰值。

配额监控

展示 ResourceQuota 的配额使用情况,帮助了解各类资源的消耗程度和剩余空间。

指标监控

展示更详细的 Prometheus 指标数据,包括自定义指标和系统指标。

Pod 资源 Top 榜

按资源消耗排序展示工作空间内的 Pod 列表,帮助快速定位资源消耗大户。可以按 CPU、内存等维度排序。

监控操作

时间范围 通过下拉框选择查询的时间范围,如最近 30 分钟、1 小时、6 小时、24 小时等。

自动刷新 开启后监控数据会定时自动刷新。

手动刷新 点击「刷新数据」按钮立即获取最新数据。

数据导出 点击「导出」按钮可将监控数据导出为文件。


编辑工作空间

编辑功能用于修改已创建工作空间的配置。

操作路径:工作空间卡片 → 更多菜单(⋯)→ 编辑配置

可编辑内容

基础信息 可修改工作空间名称和描述信息。注意:Namespace 名称创建后不可修改。

资源配额 可调整 CPU、内存、存储、GPU、Pod 等资源的配额限制。

对象资源限制 可调整各类 Kubernetes 资源对象的数量限制。

限制策略 可修改 Pod 级别、容器级别的资源限制和默认值。

编辑注意事项

配额增加 增加配额时,需要确保资源池有足够的剩余配额。

配额减少 减少配额时,如果新配额小于当前已使用量,修改将被拒绝。需要先清理资源使用后再降低配额。

限制策略变更 修改限制策略后,已存在的 Pod 不受影响,只对新创建的 Pod 生效。


删除工作空间

删除功能用于移除不再需要的工作空间。

操作路径:工作空间卡片 → 更多菜单(⋯)→ 删除

删除影响

删除工作空间是一个危险操作,会产生以下影响:

Kubernetes 资源删除 对应的 Namespace 会被删除,Namespace 内的所有资源(Pod、Deployment、Service、ConfigMap、Secret、PVC 等)都会被级联删除。

数据丢失 存储在 PVC 中的数据可能会丢失(取决于存储类的回收策略)。

配额释放 工作空间占用的资源配额会被释放回资源池。

删除前检查

执行删除前,建议进行以下检查:

  1. 确认工作空间内没有正在运行的重要业务
  2. 备份需要保留的配置和数据
  3. 通知相关的开发和运维人员
  4. 确认 PVC 数据的处理方式

删除确认

系统会要求二次确认删除操作,防止误删。请仔细阅读确认提示,确保了解删除的影响后再执行。


最佳实践

工作空间规划建议

按环境划分 建议按开发、测试、预发布、生产等环境创建独立的工作空间,实现环境隔离。

命名规范 建立统一的 Namespace 命名规范,例如:{项目简称}-{环境}-{用途},如 app-prod-apiapp-dev-frontend

资源配额预估 根据应用的资源需求合理设置配额,避免过度分配或配额不足。

限制策略配置建议

设置合理的默认值 为容器设置合理的默认资源请求和限制,避免开发者忘记配置导致的问题。

防止资源滥用 通过 Pod 和容器的最大限制,防止单个工作负载占用过多资源。

保证基本资源 通过最小资源限制,确保每个 Pod/容器都有基本的运行资源。

迁移操作建议

批量规划 对于大量需要迁移的工作空间,建议先制定迁移计划,明确每个工作空间的目标项目。

配额检查 迁移前检查目标项目的配额是否充足,避免迁移失败。

非高峰期操作 虽然迁移不影响集群,但建议在非业务高峰期执行,便于观察和处理可能的问题。


常见问题

为什么创建工作空间失败?

可能原因 1:资源池配额不足。检查资源池的剩余配额是否满足新工作空间的需求。

可能原因 2:Namespace 名称冲突。检查集群中是否已存在同名的 Namespace。

可能原因 3:Namespace 命名不符合规范。确保名称以小写字母开头,只包含小写字母和连字符,以字母结尾。

为什么无法迁移工作空间?

可能原因 1:目标项目没有对应集群的资源池。需要先为目标项目分配该集群的资源。

可能原因 2:目标项目配额不足。需要增加目标项目的配额或减少工作空间的资源占用。

监控数据为什么显示为空?

可能原因 1:集群未配置 Prometheus。需要在集群的中间件管理中配置并启用 Prometheus。

可能原因 2:Prometheus 连接异常。检查 Prometheus 服务状态和网络连通性。

可能原因 3:工作空间内没有运行中的 Pod。只有运行中的工作负载才会产生监控数据。

删除工作空间后数据能否恢复?

工作空间删除后,Namespace 及其内部资源会被 Kubernetes 级联删除,这是不可逆的操作。对于 PVC 中的数据,取决于存储类的回收策略(Delete/Retain)。如果使用 Delete 策略,数据会被一并删除;如果使用 Retain 策略,底层存储卷会被保留。

建议在删除前做好数据备份,重要数据使用 Retain 策略的存储类。