Skip to content

节点 Node

节点(Node)是 Kubernetes 集群中的集群级资源,是运行容器组的物理机或虚拟机。在 Kuboard 的节点页面,你可以查看每台节点的健康状况与资源占用、管理调度在其上的容器组,并在维护或故障时封锁、清空该节点,或直接打开一个终端进去排查。

典型场景

  • 查看集群各节点的 CPU / 内存 / 容器组用量,判断是否需要扩容或迁移;
  • 节点要维护 / 升级 / 下线前,先暂停调度清空节点,把业务平滑迁移走;
  • 容器组反复异常且确认为主机层面问题时,在该节点上直接打开终端排查。

入口位置

  1. 登录 Kuboard,点击左侧导航 集群管理
  2. 展开 节点与运行时,点击 节点,进入节点列表页(同分组下还有 运行时类,见调度与稳定性)。

节点是集群级资源,不属于任何名称空间;列表页复用 Kuboard 通用资源列表,可通过右上角搜索快速定位节点。

节点列表页

列表页主要列如下:

说明
(行首展开)展开后查看「System Info」与「Node Config」两张卡片,见下文
Roles由节点 node-role.kubernetes.io/* 标签读出的角色(control-plane / worker 等)
Versionkubelet 版本号
Internal IP节点内网地址
Capacity该节点的 CPU / 内存 / 容器组三条用量指示条:百分比 + 已用/总量

列表页顶部还有整集群的 CPU / Mem / Pods 用量汇总指示条(已用/总量 + 百分比),一眼看出集群整体水位。

展开查看系统信息与配置

点击行首展开箭头,不进入详情即可查看两类信息:

卡片内容
System Info操作系统镜像(OS Image)、内核版本(Kernel Version)、容器引擎(Container Runtime)、体系架构(Architecture)
Node ConfigPod CIDR、Provider ID、KubeProxy 版本、污点(Taints)列表(key=value:effect

用量数据不可用时的表现

节点用量来自 metrics-server(metrics.k8s.io 指标接口)。集群未安装 metrics-server 时,CPU / 内存指示条消失,页面提示「请检查您是否安装了 metrics-server」,仅保留容器组数量指示。

查看节点详情

点击节点名称进入节点详情页,从上到下依次为:

  • 关联事件:该节点最近发生的事件(Kubelet 上报的启动、驱逐、磁盘压力等),按时间倒序;
  • 节点状态:Kubernetes 上报的各条件(conditions)表格;
  • 基本信息:内存与短暂存储的可分配 / 总量、Pod CIDR、IPTunnelAddr、各类地址(InternalIP / Hostname 等);
  • 资源占用:近期曲线与计算指标。

节点状态

节点状态卡片用表格列出每个条件,Indicator 列以「正常 / 警告」标签直观提示:

条件(Type)含义
Ready节点是否就绪并可调度容器组;为 False 时显示警告
MemoryPressure / DiskPressure / PIDPressure内存 / 磁盘 / 进程数压力,为 True 表示资源紧张
NetworkUnavailable网络是否可用

每个条件同时显示 reason、message、最后心跳时间(lastHeartbeatTime)与最后变更时间(lastTransitionTime),便于定位不健康的原因。

资源占用

资源占用区域由两块组成:

  1. CPU / 内存曲线:两个卡片分别展示该节点 CPU、内存的近期使用趋势;
  2. 计算指标:当前用量与「可分配(Allocatable)」总量的对比——CPU 核数、CPU 请求(request)/ 限制(limit)占可分配的比例、内存(GiB)及其请求 / 限制占比、容器组数量 / 上限。

指标来源

用量与曲线数据来自 metrics-server。若相关区域提示「请检查您是否安装了 metrics-server」,说明该集群未部署 metrics-server,或当前账号无读取节点指标的权限。

查看节点上的容器组

节点详情页的 容器组(Pod) 页签列出调度到该节点的全部容器组,并按列提供搜索 / 排序:

说明
名称空间 / 名称名称可点击进入对应容器组详情;正在删除的容器组名称带删除线并标红(Deleting)
状态 / Pod IP运行阶段(Running / Pending 等)与 Pod IP
CPU / 内存 请求、限制该容器组内各容器的 requests / limits 汇总(m / Mi)
创建时间 / 操作创建时长;操作列提供 驱逐 按钮

驱逐单个容器组

点击某容器组的 驱逐,在弹出的对话框中可设置:

选项说明
Force勾选后强制驱逐,不等待优雅终止
Grace period默认使用容器组自身的 terminationGracePeriodSeconds,也可切换为自定义秒数

如果该节点尚未暂停调度,点击驱逐会先弹出「此操作将暂停当前节点的调度,是否继续?」的确认,确认后 Kuboard 会先暂停该节点调度、再驱逐该容器组——这样容器组被驱逐后不会立即被重新调度回同一台节点。

驱逐 ≠ 删除

驱逐(Eviction)走 Kubernetes 的优雅终止流程,有对应控制器(Deployment / StatefulSet 等)的容器组会被重新调度到其它节点继续运行。底层使用的 Eviction API 版本(policy/v1policy/v1beta1)由 Kuboard 按集群版本自动探测,无需你关心。

暂停调度 / 恢复调度(Cordon / UnCordon)

节点详情页右上角工具栏提供了调度开关(需要节点的更新权限,无权限时按钮不显示):

  • 暂停调度(Cordon):点击后给节点添加 node.kubernetes.io/unschedulable:NoSchedule 污点并标记为不可调度。已运行的容器组不受影响,但新的容器组不会再被调度到该节点;按钮随即变为 恢复调度(UnCordon)
  • 恢复调度(UnCordon):点击移除该污点,节点恢复接收新的容器组。

什么时候用

节点要维护、升级或下线前,先暂停调度,避免新容器组调度上来;需要把已有容器组也迁走时,再接着使用下面的清空节点

清空节点(Drain)

点击工具栏的 清空节点(Drain Node),弹出对话框设置与驱逐单个容器组相同的选项:

选项说明
Force强制驱逐,不等待优雅终止
Grace period默认使用容器组自身的 terminationGracePeriodSeconds,或自定义秒数

点击确定后先弹出确认「此操作将排空节点上所有的 Pod,是否继续?」,确认后 Kuboard 自动执行两步:先暂停该节点调度,再逐个驱逐该节点上的所有容器组,逐条提示「已成功驱逐容器组 名称空间 / 名称」,你可以回到容器组页签观察结果。

清空是高风险操作

清空会把节点上全部容器组驱逐到其它节点。执行前请确认集群有足够的空闲容量承接,且状态副本(StatefulSet)所在节点的数据可用;已封锁的节点不会被调度进新容器组,事件与驱逐结果可随时在容器组页签查看。

在节点上打开终端

节点详情页工具栏的 Shell 按钮可以一键启动节点终端(NodeShell):Kuboard 会在该节点上创建临时特权调试容器,让你在浏览器中直接进入节点操作系统执行命令,无需 SSH 与 kubectl

  • 节点处于 Ready 状态、账号有更新节点及在调试命名空间创建容器组的权限时,Shell 按钮可用;
  • 启动后节点详情页顶部出现 节点 Shell 会话 横幅,状态变为 Running 后可点击 打开终端,也可随时 查看 Pod / 停止 会话。

完整步骤、会话生命周期与全局配置见 节点终端 NodeShell

容器内排障

如果问题只限于某个容器组内部(网络、进程、文件),可以从该容器组的详情页注入调试容器 Debug Container,不必进入整台节点。

相关页面