工作空间管理
✨ 特性:
- 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 会被归属到默认项目。通过迁移功能,可以将这些工作空间分配到正确的业务项目中。
场景二:业务调整 当组织架构调整或业务归属变更时,可以将工作空间迁移到新的项目下。
场景三:资源重新规划 在进行资源池调整时,可能需要将工作空间迁移到配额更充足的项目。
迁移前提条件
执行迁移操作前,请确保满足以下条件:
目标项目拥有对应集群的资源池 工作空间只能迁移到在同一集群上有资源池的项目。如果目标项目没有该集群的资源池,需要先为目标项目分配资源。
目标项目资源配额充足 目标项目的资源池必须有足够的剩余配额来容纳被迁移的工作空间。系统会在迁移时校验配额,如果配额不足,迁移将被拒绝。
迁移操作步骤
操作路径:工作空间卡片 → 更多菜单(⋯)→ 迁移空间
在弹出的「迁移工作空间」对话框中,系统会显示迁移说明,请仔细阅读。
确认「当前工作空间」和「当前项目」信息无误。
在「目标项目」下拉框中选择要迁移到的目标项目。下拉列表只会显示在当前集群上有资源池的项目。
点击「确认迁移」按钮完成操作。
迁移说明
迁移注意事项
- 工作空间将从当前项目迁移到目标项目
- 迁移过程中会更新所有相关资源配额
- 请确保目标项目有足够的资源配额
- 迁移操作不可撤销,请谨慎操作
迁移原理
迁移操作是纯平台层的逻辑处理,不会对 Kubernetes 集群产生任何影响。具体来说:
不变的内容 Kubernetes 集群中的 Namespace 及其内部的所有资源(Pod、Deployment、Service 等)保持不变,工作负载不会中断。
变更的内容 平台数据库中工作空间与项目的关联关系会被更新,资源配额的归属会从源项目转移到目标项目。
这种设计确保了迁移操作的安全性,即使在生产环境中执行迁移,也不会影响正在运行的业务。
创建工作空间
创建工作空间的流程分为四个步骤:基础信息 → 资源配额 → 限制策略 → 确认信息。
操作路径:项目中心 → 工作空间 → 点击右上角「+」按钮
创建前提条件
要在某个集群上创建工作空间,必须满足以下条件:
项目已分配该集群的资源池 项目必须拥有目标集群的资源配额,才能在该集群上创建工作空间。
资源配额充足 资源池中需有足够的剩余配额来满足新工作空间的资源需求。
用户权限 操作用户需具有项目管理员权限或工作空间创建权限。
步骤一:基础信息(必填)
配置工作空间的基本标识信息。
工作空间名称(必填):输入工作空间的显示名称,用于在平台中标识和管理。支持中英文,最多 100 字符。例如:开发环境、生产环境、测试环境 等。
命名空间(必填):输入对应的 Kubernetes Namespace 名称。命名规则如下:
- 必须以小写字母开头
- 只能包含小写字母(a-z)和连字符(-)
- 必须以字母结尾
- 例如:
dev-namespace、prod-env、app-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 中的数据可能会丢失(取决于存储类的回收策略)。
配额释放 工作空间占用的资源配额会被释放回资源池。
删除前检查
执行删除前,建议进行以下检查:
- 确认工作空间内没有正在运行的重要业务
- 备份需要保留的配置和数据
- 通知相关的开发和运维人员
- 确认 PVC 数据的处理方式
删除确认
系统会要求二次确认删除操作,防止误删。请仔细阅读确认提示,确保了解删除的影响后再执行。
最佳实践
工作空间规划建议
按环境划分 建议按开发、测试、预发布、生产等环境创建独立的工作空间,实现环境隔离。
命名规范 建立统一的 Namespace 命名规范,例如:{项目简称}-{环境}-{用途},如 app-prod-api、app-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 策略的存储类。