You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kubernetes Pod中获取节点底层信息(核心数、核心ID等)?

在Pod中获取节点底层信息的几种方法

一、挂载节点系统文件目录

节点的核心硬件信息(比如CPU详情)存在/proc目录下,Kubelet的日志、配置文件通常在/var/log/kubelet.log、/var/lib/kubelet/这类路径。你可以通过Volume把这些节点上的目录挂载到Pod里直接读取:

  1. 编写Pod配置文件:
apiVersion: v1
kind: Pod
metadata:
  name: node-info-pod
spec:
  containers:
  - name: node-info-container
    image: busybox
    command: ["sleep", "3600"]
    volumeMounts:
    - name: proc
      mountPath: /host/proc
    - name: kubelet-log
      mountPath: /host/var/log/kubelet.log
    - name: kubelet-config
      mountPath: /host/var/lib/kubelet
  volumes:
  - name: proc
    hostPath:
      path: /proc
      type: Directory
  - name: kubelet-log
    hostPath:
      path: /var/log/kubelet.log
      type: File
  - name: kubelet-config
    hostPath:
      path: /var/lib/kubelet
      type: Directory
  1. 进入Pod后执行命令获取信息:
  • 查看核心总数量:cat /host/proc/cpuinfo | grep "processor" | wc -l
  • 查看每个核心的ID:cat /host/proc/cpuinfo | grep "processor"
  • 查看Kubelet运行日志:cat /host/var/log/kubelet.log
  • 查看Kubelet配置文件:cat /host/var/lib/kubelet/config.yaml(如果节点上存在这个文件)

二、用Kubernetes Downward API注入信息

Downward API能直接把节点的标准化属性注入到Pod的环境变量或文件里,不用手动挂载目录:

  1. 编写Pod配置,通过环境变量注入节点相关信息:
apiVersion: v1
kind: Pod
metadata:
  name: downward-api-pod
spec:
  containers:
  - name: downward-container
    image: busybox
    command: ["sleep", "3600"]
    env:
    - name: NODE_NAME
      valueFrom:
        fieldRef:
          fieldPath: spec.nodeName
    - name: POD_CPU_REQUEST
      valueFrom:
        resourceFieldRef:
          containerName: downward-container
          resource: requests.cpu
    - name: POD_CPU_LIMIT
      valueFrom:
        resourceFieldRef:
          containerName: downward-container
          resource: limits.cpu
  1. 进入Pod后查看环境变量:printenv | grep -E "NODE_|POD_",能拿到节点名称、Pod的CPU资源申请/限制值等信息。

三、调用Kubernetes API获取节点完整信息

如果需要更全面的节点元数据和状态,可以在Pod里通过ServiceAccount访问K8s API:

  1. 先创建具有节点读取权限的权限组件:
apiVersion: v1
kind: ServiceAccount
metadata:
  name: node-reader-sa
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: node-reader-role
rules:
- apiGroups: [""]
  resources: ["nodes"]
  verbs: ["get", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: node-reader-binding
subjects:
- kind: ServiceAccount
  name: node-reader-sa
  namespace: default
roleRef:
  kind: ClusterRole
  name: node-reader-role
  apiGroup: rbac.authorization.k8s.io
  1. 编写Pod配置使用这个ServiceAccount:
apiVersion: v1
kind: Pod
metadata:
  name: k8s-api-pod
spec:
  serviceAccountName: node-reader-sa
  containers:
  - name: api-container
    image: curlimages/curl
    command: ["sleep", "3600"]
  1. 进入Pod后执行命令获取当前节点的详细信息:
# 先获取Pod所在的节点名称
NODE_NAME=$(curl -s http://127.0.0.1:9090/api/v1/namespaces/default/pods/$HOSTNAME | jq -r '.spec.nodeName')
# 查询该节点的完整状态信息
curl -s http://127.0.0.1:9090/api/v1/nodes/$NODE_NAME | jq '.status'

如果用的是busybox镜像,需要先安装jq工具:apk add jq。

内容的提问来源于stack exchange,提问作者imawful

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 05:13:21