• 根据 PID 获取 K8S Pod名称


    根据 Pid 获取 K8s Pod 名称

    脚本工具

    $ vim pod_name_info.sh
    
    #!/bin/bash
    
    Check_jq() {
      which jq &> /dev/null
      if [ $? != 0 ];then
        echo -e "33[32;32m 系统没有安装 jq 命令,请参考下面命令安装!  33[0m 
    "
        echo -e "33[32;32m Centos 或者 RedHat 请使用命令 yum install jq -y 安装 33[0m"
        echo -e "33[32;32m Ubuntu 或者 Debian 请使用命令 apt-get install jq -y 安装 33[0m"
        exit 1
      fi
    }
    
    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 格式。

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

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

    运行方式

    # 通过 Pid 获取 Pod 名称
    $ ./pod_name_info.sh Pid
    

     根据 Pod 名称获取 Pid

    $ vim pod_pid_info.sh
    
    #!/usr/bin/env bash
    
    Check_jq() {
      which jq &> /dev/null
      if [ $? != 0 ];then
        echo -e "33[32;32m 系统没有安装 jq 命令,请参考下面命令安装!  33[0m 
    "
        echo -e "33[32;32m Centos 或者 RedHat 请使用命令 yum install jq -y 安装 33[0m"
        echo -e "33[32;32m Ubuntu 或者 Debian 请使用命令 apt-get install jq -y 安装 33[0m"
        exit 1
      fi
    }
    
    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}'`
      do
        docker_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名称
    

    附上原文:https://mp.weixin.qq.com/s/HF5rzr5fULiMWq1NPe780g

     

  • 相关阅读:
    教你删除Linux中这些因特殊字符命名无法删除的文件
    xtrabackup进行mysql数据库备份、还原
    Redis示例配置文件
    Docker 的基本概念和操作
    Vue项目目录结构
    Vue前端项目搭建及运行(mac系统)
    编辑vue项目后,运行结果却不变
    如何在 IDEA 中创建并部署 JavaWeb 程序
    听说你对 JavaScript 中的输出挺熟?
    js 常用字符串截取
  • 原文地址:https://www.cnblogs.com/zjz20/p/13366149.html
Copyright © 2020-2023  润新知