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

Kubernetes中如何获取当前Pod名称及其他命名空间的Pod信息?

Kubernetes Pod内服务的元数据获取方案

1. Pod中JavaScript服务获取自身名称/ID

Kubernetes会自动将Pod的核心元数据注入为环境变量,Node.js环境下可直接读取:

  • 获取Pod名称:process.env.POD_NAME
  • 获取Pod ID(UID):process.env.POD_UID

示例代码:

// Node.js环境示例
console.log(`当前Pod名称:${process.env.POD_NAME}`);
console.log(`当前Pod UID:${process.env.POD_UID}`);

如果需要自定义元数据字段,可通过Downward API在Pod配置中手动注入,但默认环境变量已覆盖核心需求。


2. 命名空间A的Python服务获取命名空间B的Pod列表

前提条件

需为命名空间A的服务账号配置RBAC权限,允许其读取命名空间B的Pod资源:

  1. 创建ClusterRole(若仅需访问命名空间B,也可使用Role):
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["list", "get"]
  1. 将该ClusterRole绑定到命名空间A的服务账号:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: read-pods-across-namespaces
subjects:
- kind: ServiceAccount
  name: default  # 替换为你的服务账号名
  namespace: A   # 目标命名空间A
roleRef:
  kind: ClusterRole
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io

Python代码实现

使用官方Kubernetes Python客户端:

  1. 安装依赖:pip install kubernetes
  2. 编写代码:
from kubernetes import client, config

# 加载Pod内的集群配置
config.load_incluster_config()

# 初始化Core API客户端
v1 = client.CoreV1Api()

# 获取命名空间B的所有Pod
pod_list = v1.list_namespaced_pod(namespace="B")

# 提取所需标识
for pod in pod_list.items:
    print(f"Pod名称:{pod.metadata.name}")
    print(f"Pod UID:{pod.metadata.uid}")
    print(f"Pod标签:{pod.metadata.labels}")
    print(f"Pod状态:{pod.status.phase}")
    print("---")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:55:19