当前位置: 首页 > news >正文

根据PID获取K8S-Pod名称-反之POD名称获取PID

背景

随着 Kubernetes 越来越火爆,运维人员排查问题难度越来越大。比如我们收到监控报警,某台 Kubernetes Node 节点负载高。通过 top 或者 pidstat 命令获取 Pid,问题来了,这个 Pid 对应那个 Kubernetes Pod 呢?

下面是作者写的两个小工具,可以帮助运维同胞们快速定位问题。

根据 Pid 获取 K8s Pod 名称

脚本工具

$ vim pod_name_info.sh#!/usr/bin/env bashCheck_jq() {which jq &> /dev/nullif [ $? != 0 ];thenecho -e "\033[32;32m 系统没有安装 jq 命令,请参考下面命令安装!  \033[0m \n"echo -e "\033[32;32m Centos 或者 RedHat 请使用命令 yum install jq -y 安装 \033[0m"echo -e "\033[32;32m Ubuntu 或者 Debian 请使用命令 apt-get install jq -y 安装 \033[0m"exit 1fi
}Pod_name_info() {CID=`cat /proc/${pid}/cgroup | head -1 | awk -F '/' '{print $5}'`CID=$(echo ${CID:0:8})docker inspect $CID | jq '.[0].Config.Labels."io.kubernetes.pod.name"'
}pid=$1
Check_jq
Pod_name_info

上面 Shell 脚本需要服务器上安装 jq 命令,因为脚本依赖 jq 来处理 json 格式。

简单介绍下 jqjson

有些小伙伴们可能没有听说过 jq 命令,下面简单介绍下 jqjson

JSON 是一种轻量级的数据交换格式。其采用完全独立于语言的文本格式,具有方便人阅读和编写,同时也易于机器的解析和生成。这些特性决定了 JSON 格式越来越广泛的应用于现代的各种系统中。作为系统管理员,在日常的工作中无论是编辑配置文件或者通过 http 请求查询信息,我们都不可避免的要处理 JSON 格式的数据。

jq 是一款命令行下处理 JSON 数据的工具。其可以接受标准输入命令管道或者文件中的 JSON 数据,经过一系列的过滤器(filters)和表达式的转后形成我们需要的数据结构并将结果输出到标准输出中。jq 的这种特性使我们可以很容易地在 Shell 脚本中调用它。

演示

运行方式
# 通过 Pid 获取 Pod 名称
$ ./pod_name_info.sh Pid
下面展示输出结果

在这里插入图片描述

上面脚本是根据 Pid 来获取 Pod 名称,但有时想通过 Pod 名称来获取 Pid,这又怎么获取了,接着看下文。

根据 Pod 名称获取 Pid

脚本工具

$ vim pod_pid_info.sh#!/usr/bin/env bashCheck_jq() {which jq &> /dev/nullif [ $? != 0 ];thenecho -e "\033[32;32m 系统没有安装 jq 命令,请参考下面命令安装!  \033[0m \n"echo -e "\033[32;32m Centos 或者 RedHat 请使用命令 yum install jq -y 安装 \033[0m"echo -e "\033[32;32m Ubuntu 或者 Debian 请使用命令 apt-get install jq -y 安装 \033[0m"exit 1fi
}Pid_info() {docker_storage_location=`docker info  | grep 'Docker Root Dir' | awk '{print $NF}'`for docker_short_id in `docker ps | grep ${pod_name} | grep -v pause | awk '{print $1}'`dodocker_long_id=`docker inspect ${docker_short_id} | jq ".[0].Id" | tr -d '"'`cat ${docker_storage_location}/containers/${docker_long_id}/config.v2.json | jq ".State.Pid"done
}pod_name=$1
Check_jq
Pid_info

演示

运行方式
# 通过 Pod名称 获取 Pid 
$ ./pod_pid_info.sh Pod名称
下面展示输出结果

在这里插入图片描述

🔥运维干货分享

  • 我的站点:www.byteooo.cn

  • 软考高级系统架构设计师备考学习资料

  • 软考中级数据库系统工程师学习资料

  • 软考高级网络规划设计师备考学习资料

  • 软考高级系统规划与管理师

  • 软考中级系统集成项目管理师

  • Kubernetes CKA认证学习资料分享

  • AI大模型学习资料合集

  • 免费文档翻译工具(支持word、pdf、ppt、excel)

  • PuTTY中文版安装包

  • MobaXterm中文版安装包

  • pinginfoview网络诊断工具中文版

  • Xshell、Xsftp、Xmanager中文版安装包

  • Typora简单易用的Markdown编辑器

  • Window进程监控工具,能自动重启进程和卡死检测

  • Spring 源码学习资料分享

  • 毕业设计高质量毕业答辩 PPT 模板分享

  • IT行业工程师面试简历模板分享

http://www.dtcms.com/a/477853.html

相关文章:

  • 做网站三年3万块钱论坛搭建一键
  • C#进阶技巧掌握外部进程的启动与控制(一):进程基础与基本操作
  • 昂瑞微:实现精准突破,攻坚射频“卡脖子”难题
  • 延安做网站的公司电话如何用云服务器搭建个人网站
  • shellSort
  • idea一直卡在build不动(Writing class)
  • LSTM自然语言处理情感分析项目(四)整合调用各类与方法形成主程序
  • MySQL为什么选择B+tree索引作为核心索引结构?
  • 在 Windows 11 上使用 JetBrains Rider 2025.2 创建 Avalonia 项目完整指南
  • 隐私保护与数据安全合规(十)
  • 【工业场景】用YOLOv8实现人员打电话识别
  • 丽水建设网站制作几年前我为客户建设网站
  • 主线程 MainLooper 和一般 Looper 的异同?
  • 【论文精读】STAR:基于文本到视频模型的空间-时间增强真实世界视频超分
  • 建设银行的积分网站百度渠道开户
  • 万网 速成网站嘉定品牌网站建设
  • Ruby on Rails 从0 开始入门到进阶到高级 - 10分钟速通版
  • Windows Docker Desktop占用C盘空间过大解决办法集合
  • 平面的方程公式
  • 2025年“羊城杯”网络安全大赛 线上初赛 (WriteUp)
  • 网络安全概念之网闸防火墙AI版
  • 学习笔记2: 深度学习之logistic回归梯度下降
  • 网络安全等级测评师能力评估样卷及答案
  • 网站服务器用什么系统网站建设及管理制度文章
  • 网站添加wordpress创意咨询策划公司
  • 企业网站设计专业好吗胶州房产网
  • 环境变量完全指南:用 Vite 把「配置」玩出花
  • 深入解析JAVA虚拟线程
  • 不同设计牙周探针在深牙周袋探查中的精确性与局限性比较
  • 三极管分类