- 后端: GetNodeDetail handler — 获取单个节点完整信息 * 系统信息: container_runtime/architecture/kubelet/os/kernel * 资源分配率: 遍历 Pod 计算 CPU/Memory/Pods requested vs allocatable * metrics-server 数据注入 (cpu_usage_m/mem_usage_mi) * 全量 conditions/taints/labels + 节点上的 Pod 列表 - 后端: K8s 客户端扩展 * NodeTaint/NodeCondition 扩展字段 (reason/message) * NodeInfo 增加 architecture/operatingSystem * GetNode(name) 单节点查询方法 * parseCpuToMilli()/parseMemToMi() 资源解析辅助函数 - 后端: 注册路由 * GET /kubernetes/:clusterCode/nodes/:name (Kuboard code) * GET /kubernetes-clusters/:id/nodes/:name (ID) - 前端: NodeDetailPage.tsx (~330行) * 系统信息卡片 + 资源分配率卡片(进度条) * 条件卡片 + 污点卡片 + 标签卡片 + Pod 列表 - 前端: 节点名称可点击跳转 (ClusterOverviewPage) - 验证: API/SPA/TS/Vite 全部通过
5.4 KiB
5.4 KiB
K8s 管理功能评估基线
生成时间: 2026-06-21 | 评估人: Logan + AI
总体规模
| 层 | 规模 |
|---|---|
后端 kubernetes.go |
2583 行 / 99 个函数 / 74 个路由 |
后端 kubernetesclient/client.go |
1486 行 |
| 前端组件 | 22 个 .tsx / 7498 行 |
功能评估
✅ 已完成(90%)
| 功能 | 后端 | 前端 | 验证状态 |
|---|---|---|---|
| 集群 CRUD + 同步 | ✅ | ✅ | ✅ 已验证 |
| 集群表单(名称即 code) | ✅ | ✅ NAME_RE 正则 | ✅ |
| 节点列表 + 实时 metrics | ✅ ListNodes 调 GetNodeMetrics | ✅ ClusterOverviewPage | ⚠️ 实时OK,DB缓存缺 |
| Pod 列表 | ✅ | ✅ | ✅ |
| Deployment 列表/详情 | ✅ | ✅ DeploymentView + DeploymentWorkload | ✅ |
| Deployment view/edit 路由 | ✅ | ✅ /:mode/:kind/:name | ✅ |
| Deployment 伸缩/重启/镜像更新 | ✅ scale/restart/update-image | ✅ | ✅ |
| Deployment 历史版本/回滚 | ✅ revisions/rollback | ✅ | ✅ |
| Pod 日志(实时流) | ✅ GetPodLogs | ✅ PodLogsViewer fetch stream | ✅ |
| Pod 终端 exec | ✅ ExecTerminal(WS) | ✅ PodExecTerminal bash/sh/ash | ✅ |
| Pod 文件浏览 + 下载 + 上传 | ✅ files/list + files/download + files/upload | ✅ PodFileBrowser | ✅ |
| YAML 查看/编辑 | ✅ GetYAML + UpdateYAML | ✅ YamlViewer | ✅ |
| ReplicaSet 列表 | ✅ | ✅ | ✅ |
| Service/Ingress 列表 | ✅ | ✅ | ✅ |
| HPA 列表/创建/删除 | ✅ | ✅ | ✅ |
| ConfigMap/Secret 列表 | ✅ | ✅ | ✅ |
| ConfigMap/Secret 编辑 | ✅ UpdateResourceYAMLNS | ✅ YamlViewer(autoEdit) | ✅ curl 验证 |
| Events 列表 | ✅ ListEvents | ✅ EventsPage | ✅ |
| 容量分析 | ✅ GetCapacityAnalysis | ✅ CapacityPage | ✅ |
| kubectl 终端 | ✅ KubectlShell(WS) | ✅ KubectlTerminal | ✅ |
| 拓扑图 | ✅ topology get/save | ✅ TopologyView | ✅ |
| Node 详情页 | ✅ GetNodeDetail (M10) | ✅ NodeDetailPage | ✅ curl 验证 |
❌ 缺失 / 进行中
| 功能 | 优先级 | 说明 |
|---|---|---|
| Pod 文件上传 | ✅ | P2 |
| ConfigMap/Secret 编辑 | ✅ | P2 |
| Deployment 可视化编辑器 | ✅ | P1 |
| YAML 编辑器增强 | P1 | ✅ 已完成 M6 — CodeMirror 6 语法高亮+行号+折叠+内联模式 |
| CI/CD 集成菜单项 | ✅ | P3 |
| Deployment 暂停更新 | ✅ | P3 |
📋 Deployment 编辑器现状评估 (2026-06-23)
| 组件 | 行数 | 状态 | 说明 |
|---|---|---|---|
DeploymentWorkload.tsx |
680 | ✅ 可用 | Shell 框架(header + 三模式切换 + EditModeContainer Tab 系统) |
DeploymentView.tsx |
395 | ✅ 完整 | 查看模式(状态卡片/容器模板/Pod实例/版本历史/RS) |
DeploymentEditBasic.tsx |
340 | ✅ 完成 M6 | 基本信息 Tab — replicas/labels/annotations/selector 编辑 |
DeploymentEditContainers.tsx |
700+ | ✅ 完成 M7 | 完整容器编辑器(工作容器+初始化容器,10+ 字段编辑) |
DeploymentEditStorage.tsx |
437 | ✅ 完成 M8 | 存储挂载 Tab — 6种 volume 类型编辑 + volumeMounts 汇总 |
DeploymentEditAdvanced.tsx |
632 | ✅ 完成 M8 | 高级设置 Tab — 更新策略/调度/容忍/DNS/主机别名/安全上下文 |
DeploymentEditService.tsx |
— | ✅ 完成 M9 | 服务/应用路由 Tab — selector 关联 Service + 创建/删除 |
YamlViewer.tsx |
220 | ✅ 升级 M6 | CodeMirror 6 YAML 语法高亮+行号+折叠,弹窗+内联双模式 |
DeploymentDetail.tsx |
719 | 💀 遗留 | 旧版 tab 式详情页,仅 KubernetesWorkloads.tsx 引用,待清理 |
| 后端 GetYAML/UpdateYAML | — | ✅ 完善 | 支持 12 种资源,PUT 直通 K8s API,纯前端工程无需改后端 |
编辑器 5 Tab 模块拆分:
| Tab | 模块 | 预估代码量 | 核心字段 |
|---|---|---|---|
| 基本信息 | M6 ✅ | ~340 行 | name/namespace/labels/annotations/replicas |
| 容器信息 | M7 ✅ | ~700 行 | 镜像/资源/端口/环境变量/健康检查/生命周期/安全上下文/卷挂载/初始化容器 |
| 存储挂载 | M8 ✅ | ~437 行 | 6种数据卷(EmptyDir/HostPath/ConfigMap/Secret/PVC/NFS) + volumeMounts汇总 |
| 高级设置 | M8 ✅ | ~632 行 | 更新策略/调度/nodeSelector/tolerations/DNS/主机别名/SA/安全上下文/hostNetwork |
| 服务/应用路由 | M9 ✅ | — | Service(ClusterIP/NodePort/LB) selector关联 + Ingress |
| YAML 编辑器 | M6 ✅ | ~220 行 | CodeMirror 6 语法高亮+行号+折叠 |
| 合计 | M6-M9 ✅ 全部完成 | ~2700 行 | 纯前端,零后端改动 |
⚠️ 已知架构约束
- K8s 集群(161/162)是 CentOS 7 — MySQL 8.0 容器跑不了(x86-64-v2),用 hostNetwork + 外部 MySQL
- metrics-server 已安装 —
kubectl top nodes正常返回 - 自研 K8s 客户端 — 不用 client-go,保持轻量 net/http 方案
- 两个数据路径:ListNodes 实时调 API(含 metrics),SyncCluster 写 DB(缺 metrics)→ 前端不同页面读不同路径
- Node 详情页 (M10 ✅) —
GetNodeDetailhandler 返回完整节点信息:container_runtime/architecture/taints/conditions/资源分配率/Pod列表,前端NodeDetailPage.tsx可视化展示