Skip to content

应用中心

特性:

  • 以应用为中心: 告别资源碎片化管理,一站式管理应用全生命周期
  • 多版本管理: 支持应用多版本发布、回滚、灰度发布
  • 服务聚合: 自动关联 Service、Ingress,无需频繁切换页面
  • 便捷运维: Pod 管理、副本伸缩、镜像更新、配置变更一键完成
  • 全类型支持: Deployment、StatefulSet、DaemonSet、CronJob 全覆盖

设计理念

为什么需要以应用为中心?

在传统的 Kubernetes 管理方式中,运维人员需要分别管理 Deployment、Service、Ingress、ConfigMap 等多种资源。当一个业务应用包含多个组件时,运维人员不得不在不同的资源页面之间频繁切换,这不仅效率低下,而且容易出错。

以一个典型的微服务应用为例,它可能包含以下资源:一个 Deployment 管理 Pod 副本、一个或多个 Service 暴露服务端口、一个 Ingress 提供外部访问入口、若干 ConfigMap 和 Secret 存储配置。在传统模式下,查看这个应用的状态需要访问至少 4-5 个不同的页面。

以应用为中心的解决方案

Kube Nova 的应用中心采用「以应用为中心」的设计理念,将与应用相关的所有资源聚合到一个统一的管理视图中。这种设计带来了三个核心价值:

第一,信息聚合,一目了然。 在应用详情页面,您可以看到应用的 Pod 状态、Service 端口、Ingress 地址、资源使用等所有关键信息,无需在多个页面之间跳转。

第二,操作集中,提升效率。 镜像更新、副本伸缩、配置变更、服务管理等常用操作都集中在应用页面内完成,大幅减少操作步骤,提升运维效率。

第三,版本管理,轻松回滚。 每次应用变更都会记录为一个版本,支持快速查看历史版本、对比差异、一键回滚,让应用发布更加安全可控。

应用类型说明

应用中心支持管理以下类型的 Kubernetes 工作负载:

Deployment(无状态应用部署) 是最常用的应用类型,支持滚动更新和水平扩展,适用于 Web 服务、API 网关、微服务等无状态应用。其特点是副本之间完全对等,可以随时扩缩容,支持滚动更新策略。

StatefulSet(有状态应用部署) 提供稳定的网络标识和持久化存储,适用于数据库、消息队列、分布式存储等有状态应用。其特点是每个 Pod 有固定的网络标识(如 pod-0、pod-1),支持有序部署和删除,可以绑定持久化存储卷。

DaemonSet(守护进程集) 确保在每个节点上运行一个 Pod 副本,适用于日志收集、监控代理、网络插件等系统守护进程。其特点是全节点部署,新节点加入时自动调度,适合需要在每个节点运行的基础服务。

CronJob(定时任务) 按照指定的时间表周期性运行任务,适用于定时备份、数据同步、报表生成等周期性任务。其特点是支持 Cron 表达式定义执行周期,任务完成后 Pod 自动清理。

为什么不包含 Pod 和 Job?

Pod 和 Job 是一次性或短生命周期的资源,不具备持续的生命周期管理需求。Pod 通常由上层控制器(Deployment、StatefulSet 等)管理,而 Job 在任务完成后即终止。应用中心聚焦于需要持续运维的长生命周期应用,因此 Pod 和 Job 由专门的管理模块处理。


应用列表

操作路径:业务中心 → 应用中心

页面布局

应用中心页面采用左右分栏布局,左侧为服务列表,右侧为应用详情。

顶部筛选栏 提供多维度的筛选条件:

  • 集群:选择要查看的目标集群
  • 工作空间:选择工作空间(对应 Kubernetes Namespace)
  • 服务:选择具体的服务/应用
  • 类型:按应用类型筛选(全部、Deployment、StatefulSet、DaemonSet、CronJob)

服务列表

左侧的服务列表展示当前工作空间内的所有应用,包括:

应用名称 显示应用的名称,点击可切换查看不同应用的详情。

应用类型标签 通过彩色标签标识应用类型:

  • deployment(蓝色):无状态应用
  • statefulset(红色):有状态应用
  • daemonset(橙色):守护进程集
  • cronjob(紫色):定时任务

搜索功能 支持按名称搜索应用,快速定位目标服务。

刷新按钮 点击可刷新服务列表,获取最新的应用状态。


基础信息

基础信息页面展示应用的概览信息和访问地址,是了解应用状态的入口。

应用状态概览

页面顶部以卡片形式展示应用的关键指标:

Pod 总数 显示应用当前的 Pod 副本总数,反映应用的规模。

正常 Pod 显示处于 Running 且就绪的 Pod 数量,以及正常率百分比。100% 表示所有 Pod 都在正常运行。

异常 Pod 显示处于非正常状态(Pending、Failed、Unknown 等)的 Pod 数量,以及异常率。0% 是理想状态。

Service 数量 显示与该应用关联的 Service 资源数量。

Ingress 数量 显示与该应用关联的 Ingress 资源数量。

服务访问地址

服务访问地址区域聚合展示了应用的所有访问入口,这正是「以应用为中心」理念的直接体现。运维人员无需分别查看 Service 和 Ingress 资源,所有访问信息都集中在这里。

集群内部地址(ClusterIP) 列出所有 ClusterIP 类型的 Service 地址,用于集群内部服务间调用。地址格式为 http://{service-name}.{namespace}.svc.cluster.local:{port}。标签上的数字表示 Service 暴露的端口数量。

节点端口地址(NodePort) 列出所有 NodePort 类型的 Service 地址,可通过任意节点 IP 加端口访问。

LoadBalancer 访问地址 列出所有 LoadBalancer 类型的 Service 地址,适用于云环境,由云厂商提供外部负载均衡器。

Ingress 访问地址(HTTP/HTTPS) 列出所有 Ingress 资源配置的域名访问地址,支持 HTTP 和 HTTPS 协议,是应用对外暴露的首选方式。


版本管理

版本管理是应用中心的核心功能模块,支持应用的多版本管理、Pod 运维、副本伸缩、镜像更新等操作。

版本概览

版本管理页面顶部展示应用的版本信息:

发布新版本 点击「+ 发布新版本」按钮可以创建应用的新版本,用于灰度发布或蓝绿部署场景。

当前版本卡片 显示应用的当前稳定版本,绿色边框标识为「稳定版本」。点击版本卡片可展开该版本的详细管理功能。

Pod 管理

Pod 管理页签展示当前版本下所有 Pod 的详细信息和运维操作。

Pod 列表

Pod 列表以表格形式展示,包含以下信息:

Pod 名称 显示 Pod 的完整名称,点击可查看 Pod 详情。

状态 显示 Pod 的运行状态,常见状态包括:

  • Running(绿色):正常运行中
  • Pending(黄色):等待调度或资源
  • Failed(红色):运行失败
  • Terminating(灰色):正在终止

就绪 显示 Pod 内容器的就绪状态,格式为「就绪数/总数」,如 3/3 表示 3 个容器全部就绪。

重启 显示 Pod 的累计重启次数,频繁重启可能表示应用存在问题。

节点 显示 Pod 所在的节点名称。

Pod IP 显示 Pod 的集群内部 IP 地址。

运行时长 显示 Pod 从创建到现在的运行时长。

创建时间 显示 Pod 的创建时间戳。

Pod 操作

每个 Pod 行提供便捷的操作入口:

日志 查看 Pod 内容器的实时日志输出,支持多容器切换。

终端 打开 Web 终端,直接进入 Pod 内执行命令,用于调试和排查问题。

文件 浏览和管理 Pod 内的文件系统,支持文件上传和下载。

资源操作

点击「资源操作」下拉菜单,可对整个应用进行批量操作:

查看 YAML 查看应用的完整 YAML 配置,支持复制和下载。

查看详情 查看应用资源的详细信息,包括标签、注解、事件等。

停止变更 暂停正在进行的滚动更新操作。

恢复变更 恢复被暂停的滚动更新操作。

重启资源 触发应用的滚动重启,所有 Pod 会被依次重建。

停止资源 将应用的副本数设置为 0,停止所有 Pod。

启动资源 恢复应用的副本数,重新启动 Pod。

副本管理

副本管理页签用于管理应用的副本数量和自动伸缩策略。

当前状态

显示应用的当前副本状态:

当前副本数 显示正在运行的 Pod 副本数量。

应用类型 显示工作负载类型(Deployment、StatefulSet 等)。

HPA 状态 显示水平自动伸缩(HPA)的配置状态,「未配置」表示未启用自动伸缩。

VPA 状态 显示垂直自动伸缩(VPA)的配置状态。

扩缩容配置

目标副本数 通过加减按钮或直接输入数字来调整目标副本数。

变化趋势 可视化展示从当前副本数到目标副本数的变化方向(增加、减少或无变化)。

应用更改 点击「应用更改」按钮执行扩缩容操作。

重置 点击「重置」按钮恢复为当前副本数。

扩缩容说明

页面右侧提供扩缩容操作的说明:

扩容(增加副本) 系统会创建新的 Pod,逐步增加到目标数量。新 Pod 会自动加入负载均衡,开始接收流量。

缩容(减少副本) 系统会优雅地终止多余的 Pod,直到达到目标数量。Pod 会先从负载均衡中移除,然后执行 PreStop 钩子,最后终止。

重要提示

缩容会导致部分 Pod 被终止,请确保服务有足够的副本处理当前流量,避免服务中断。

更新管理

更新管理页签用于更新应用的容器镜像和更新策略。

更新镜像

镜像更新是应用发布的核心操作,支持以下配置:

容器选择 当应用包含多个容器时,选择要更新的目标容器。

当前镜像 显示容器当前使用的镜像地址和版本标签。

镜像搜索 支持搜索平台镜像仓库中的镜像,输入镜像名称(如 nginx、redis)进行搜索。

镜像配置 配置新的镜像地址:

  • 镜像仓库:选择镜像所在的仓库
  • 镜像名称:输入或选择镜像名称
  • 镜像标签:选择镜像版本标签

更新策略

配置应用的滚动更新策略(仅 Deployment 支持):

最大不可用(maxUnavailable) 更新过程中允许不可用的最大 Pod 数量或百分比。

最大超量(maxSurge) 更新过程中允许超出期望副本数的最大 Pod 数量或百分比。

历史版本

查看应用的历史发布版本,支持版本对比和一键回滚:

版本列表 显示所有历史版本的修订号、创建时间、变更内容。

版本回滚 选择目标版本,一键回滚到该版本的配置。

高级管理

高级管理页签提供容器级别的详细配置管理。

环境变量

管理容器的环境变量配置:

容器选择 选择要配置的目标容器。

环境变量列表 展示当前配置的所有环境变量:

  • 变量名:环境变量名称
  • 来源类型:值的来源方式(直接值、ConfigMap、Secret、字段引用)
  • 值/引用:具体的值或引用配置

批量导入 支持批量导入环境变量配置。

添加变量 点击「+ 添加变量」按钮新增环境变量。

健康检查

配置容器的健康检查探针:

存活探针(Liveness Probe) 检测容器是否存活,失败时重启容器。

就绪探针(Readiness Probe) 检测容器是否就绪,失败时从 Service 端点移除。

启动探针(Startup Probe) 检测容器是否启动完成,适用于启动较慢的应用。

资源配额

配置容器的资源请求(requests)和限制(limits):

CPU 请求/限制 设置 CPU 资源的请求值和上限。

内存请求/限制 设置内存资源的请求值和上限。

调度管理

配置 Pod 的调度策略:

节点选择器 通过标签选择 Pod 调度的目标节点。

亲和性/反亲和性 配置节点亲和性和 Pod 亲和性/反亲和性规则。

容忍度 配置 Pod 对节点污点的容忍规则。

存储管理

管理容器的存储卷挂载:

存储卷列表 展示已挂载的存储卷(PVC、ConfigMap、Secret、EmptyDir 等)。

添加存储卷 添加新的存储卷挂载配置。

事件管理

事件管理页签展示应用相关的 Kubernetes 事件,用于排查问题和了解应用状态变化。


服务管理

服务管理页签用于管理与应用关联的 Service 资源。

功能说明

查看服务 列出与应用关联的所有 Service,包括类型、端口、选择器等信息。

创建服务 为应用创建新的 Service,支持 ClusterIP、NodePort、LoadBalancer 类型。

编辑服务 修改现有 Service 的配置,如端口映射、服务类型等。

删除服务 删除不再需要的 Service 资源。


Ingress 管理

Ingress 管理页签用于管理应用的外部访问入口。

功能说明

查看 Ingress 列出与应用关联的所有 Ingress 规则。

创建 Ingress 为应用创建新的 Ingress,配置域名、路径、TLS 证书等。

编辑 Ingress 修改现有 Ingress 的路由规则。

删除 Ingress 删除不再需要的 Ingress 资源。


Flagger 发布

Flagger 发布页签支持基于 Flagger 的渐进式交付能力,实现金丝雀发布、A/B 测试等高级发布策略。

功能说明

金丝雀发布 逐步将流量从旧版本切换到新版本,根据指标自动推进或回滚。

A/B 测试 基于请求特征(Header、Cookie 等)将流量路由到不同版本。

蓝绿部署 维护两个相同的环境,一键切换流量。


操作审计

操作审计页签记录所有对应用的操作历史,便于追溯和审计。

审计记录

操作时间 显示操作发生的时间戳。

操作人 显示执行操作的用户。

操作类型 显示操作的类型(创建、更新、删除、扩缩容等)。

操作详情 显示操作的具体内容和变更详情。


创建工作负载

应用中心支持创建多种类型的工作负载。

操作路径:应用中心 → 点击右上角「+」按钮

工作负载类型选择

创建工作负载时,首先选择工作负载类型:

Deployment 无状态应用部署,支持滚动更新和水平扩展。适用场景包括 Web 服务、API 服务、微服务应用。关键特性是无状态、副本管理、滚动更新。

StatefulSet 有状态应用部署,提供稳定的网络标识和持久化存储。适用场景包括数据库、消息队列、分布式存储。关键特性是有状态、稳定标识、持久存储。

DaemonSet 在每个节点上运行一个 Pod 副本,适合系统守护进程。适用场景包括日志采集、监控代理、网络插件。关键特性是节点守护、全节点部署、日志/监控。

CronJob 按照指定的时间表周期性运行任务。适用场景包括定时备份、数据同步、报表生成。关键特性是定时执行、周期性、Cron 表达式。

Job 一次性任务,运行完成后自动退出。适用场景包括数据迁移、批处理任务。关键特性是一次性、批处理、任务完成退出。

Pod Kubernetes 最小的可部署单元,包含一个或多个容器。适用场景包括快速测试、临时调试。关键特性是单实例、适合测试、快速部署。

选择类型后,点击「确认创建」按钮进入详细配置页面。


不同应用类型的便捷操作

不同类型的应用在版本管理中提供的操作略有不同,以下是各类型的特有操作说明。

Deployment 便捷操作

Deployment 是功能最完整的应用类型,支持以下便捷操作:

滚动更新 支持配置 maxUnavailable 和 maxSurge 策略,实现零停机更新。

副本伸缩 支持手动调整副本数,以及配置 HPA 实现自动伸缩。

暂停/恢复 支持暂停正在进行的滚动更新,用于观察新版本状态。

回滚 支持一键回滚到任意历史版本。

重启 支持滚动重启所有 Pod,不改变配置。

StatefulSet 便捷操作

StatefulSet 在 Deployment 的基础上,针对有状态应用提供额外功能:

有序部署 Pod 按照 0、1、2... 的顺序依次创建,确保依赖关系。

有序删除 缩容时按照逆序删除,先删除编号大的 Pod。

持久存储 自动为每个 Pod 创建独立的 PVC,数据持久保存。

稳定网络 每个 Pod 有固定的 DNS 名称,重建后保持不变。

DaemonSet 便捷操作

DaemonSet 用于全节点部署场景,提供以下便捷操作:

全节点部署 自动在所有节点(或指定节点)上部署 Pod。

节点感知 新节点加入集群时自动调度,节点移除时自动清理。

更新策略 支持 RollingUpdate 和 OnDelete 两种更新策略。

节点选择 支持通过节点选择器指定部署的目标节点。

DaemonSet 特殊说明

DaemonSet 没有副本管理功能,因为其副本数由集群节点数决定。扩缩容通过调整节点选择器实现。

CronJob 便捷操作

CronJob 用于定时任务场景,提供以下便捷操作:

Cron 表达式 使用标准 Cron 表达式定义执行周期(如 0 2 * * * 表示每天凌晨 2 点)。

并发策略 配置任务并发执行策略(Allow、Forbid、Replace)。

历史保留 配置保留的成功/失败任务历史数量。

手动触发 支持手动触发一次任务执行,不影响定时计划。

暂停/恢复 支持暂停定时任务的调度,不删除已创建的 Job。


最佳实践

应用管理建议

合理选择应用类型 根据应用的特性选择合适的工作负载类型。无状态服务使用 Deployment,数据库使用 StatefulSet,系统组件使用 DaemonSet,定时任务使用 CronJob。

配置健康检查 为应用配置适当的存活探针和就绪探针,确保 Kubernetes 能够正确判断应用状态,实现自动故障恢复和优雅滚动更新。

设置资源配额 为容器设置合理的 CPU 和内存请求/限制,避免资源争抢和 OOM 问题。

使用滚动更新 利用 Deployment 的滚动更新能力,配合健康检查,实现零停机发布。

版本管理建议

语义化版本 使用语义化版本号(如 v1.2.3)标记镜像,便于追踪和回滚。

保留历史版本 合理配置 revisionHistoryLimit,保留足够的历史版本以支持回滚。

发布前测试 重大变更前在测试环境验证,确认无误后再发布到生产环境。

服务暴露建议

内部服务使用 ClusterIP 仅供集群内部调用的服务使用 ClusterIP 类型。

外部访问使用 Ingress 需要对外暴露的服务优先使用 Ingress,便于统一管理域名和证书。

谨慎使用 NodePort NodePort 会占用节点端口资源,仅在特殊场景使用。


常见问题

Pod 一直处于 Pending 状态怎么办?

可能原因 1:资源不足。检查工作空间的配额是否充足,以及集群是否有可用资源。

可能原因 2:调度约束无法满足。检查节点选择器、亲和性规则、容忍度配置是否正确。

可能原因 3:PVC 无法绑定。对于 StatefulSet,检查 PVC 是否能够成功创建和绑定。

滚动更新卡住了怎么处理?

检查新 Pod 状态 查看新创建的 Pod 是否正常启动,检查 Pod 事件和日志。

检查健康检查 确认就绪探针配置正确,新 Pod 能够通过健康检查。

暂停更新 如果需要排查问题,可以先暂停更新,防止继续创建问题 Pod。

回滚 如果问题无法快速解决,建议先回滚到上一个稳定版本。

如何实现零停机更新?

实现零停机更新需要满足以下条件:

配置就绪探针 确保新 Pod 在完全就绪后才接收流量。

合理配置更新策略 maxUnavailable 不要设置过大,确保始终有足够的 Pod 处理流量。

优雅终止 为容器配置适当的 terminationGracePeriodSeconds,确保旧 Pod 能够处理完现有请求。

PreStop 钩子 如果需要,配置 PreStop 钩子执行清理操作。