首页 > 其他分享 >K8S的pod展示镜像信息

K8S的pod展示镜像信息

时间:2022-11-21 13:22:05浏览次数:65  
标签:kubectl items image spec jsonpath 镜像 pod K8S Pod

K8S的pod展示镜像信息

 
https://kubernetes.io/zh/docs/tasks/access-application-cluster/list-all-running-container-images/

kubectl get pods  -o jsonpath='{range .items[*]}{"\n"}{.metadata.name}{"  :\t"}{range .spec.containers[*]}{.image}{", "}{end}{end}'

 

列出集群中所有运行容器的镜像

本文展示如何使用 kubectl 来列出集群中所有运行 Pod 的容器的镜像

准备开始

 

你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 建议在至少有两个节点的集群上运行本教程,且这些节点不作为控制平面主机。 如果你还没有集群,你可以通过 Minikube 构建一个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:

要获知版本信息,请输入 kubectl version.

 

在本练习中,你将使用 kubectl 来获取集群中运行的所有 Pod,并格式化输出来提取每个 Pod 中的容器列表。

列出所有命名空间下的所有容器

  • 使用 kubectl get pods --all-namespaces 获取所有命名空间下的所有 Pod
  • 使用 -o jsonpath={.items[*].spec.containers[*].image} 来格式化输出,以仅包含容器镜像名称。 这将以递归方式从返回的 json 中解析出 image 字段。
    • 参阅 jsonpath 说明 获取更多关于如何使用 jsonpath 的信息。
  • 使用标准化工具来格式化输出:trsortuniq
    • 使用 tr 以用换行符替换空格
    • 使用 sort 来对结果进行排序
    • 使用 uniq 来聚合镜像计数
kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" |\
tr -s '[[:space:]]' '\n' |\
sort |\
uniq -c

kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" |tr -s '[[:space:]]' '\n'  |uniq -c |sort -nr  |awk '{print $2}'

上面的命令将递归获取所有返回项目的名为 image 的字段。

作为替代方案,可以使用 Pod 的镜像字段的绝对路径。这确保即使字段名称重复的情况下也能检索到正确的字段,例如,特定项目中的许多字段都称为 name

kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}"

jsonpath 解释如下:

  • .items[*]: 对于每个返回的值
  • .spec: 获取 spec
  • .containers[*]: 对于每个容器
  • .image: 获取镜像
说明: 按名字获取单个 Pod 时,例如 kubectl get pod nginx,路径的 .items[*] 部分应该省略, 因为返回的是一个 Pod 而不是一个项目列表。

按 Pod 列出容器镜像

可以使用 range 操作进一步控制格式化,以单独操作每个元素。

kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.containers[*]}{.image}{", "}{end}{end}' |\
sort

列出以标签过滤后的 Pod 的所有容器

要获取匹配特定标签的 Pod,请使用 -l 参数。以下匹配仅与标签 app=nginx 相符的 Pod。

kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" -l app=nginx

列出以命名空间过滤后的 Pod 的所有容器

要获取匹配特定命名空间的 Pod,请使用 namespace 参数。以下仅匹配 kube-system 命名空间下的 Pod。

kubectl get pods --namespace kube-system -o jsonpath="{.items[*].spec.containers[*].image}"

使用 go-template 代替 jsonpath 来获取容器

作为 jsonpath 的替代,Kubectl 支持使用 go-templates 来格式化输出:

kubectl get pods --all-namespaces -o go-template --template="{{range .items}}{{range .spec.containers}}{{.image}} {{end}}{{end}}"

标签:kubectl,items,image,spec,jsonpath,镜像,pod,K8S,Pod
From: https://www.cnblogs.com/xiaohaoge/p/16911140.html

相关文章

  • 通过nrm工具进行npm镜像源的切换管理
    //全局安装nrm-i是install的缩写表示安装-g是globle的缩写别欧式全局//这样可以在任何命令行窗口使用nrmnpminrm-g//查看所有可使用的镜像源nrmls/*npm-......
  • 切换npm默认下载包镜像源为淘宝镜像源
    //查看当前镜像源地址默认镜像源地址:https://registry.npmjs.org/npmconfiggetregistry/*如果此前没有做过更改的话此处应该输出:https://registry.npmjs.org/......
  • docker与k8s
    虚拟技术是系统颗粒度的,容器技术是进程颗粒度的容器技术:容器技术的好处节省资源:比如你起一台虚拟机,可能只用到30%的资源,现在要在起一个application的时候,需要再起一台......
  • gradle-docker-plugin插件一键发布镜像
    官网地址https://bmuschko.github.io/gradle-docker-plugin/current/user-guide/#introductionSpringboot项目使用plugins{id'java'id'org.springframew......
  • k8s下Jenkins分部署部署:jenkinfiles--maven编译+镜像推送+sonar代码扫描+部署+企业微
    k8s下Jenkins分部署部署:jenkinfiles--maven编译+镜像推送+sonar代码扫描+部署+企业微信通知准备好k8s集群、安装好Jenkins、准备gitlab的ssh密钥、准备k8s的config、安装......
  • 使用Dockerfile创建一个tomcat镜像,并运行一个简单war包
    1、编写Dockerfile文件viDockerfileFROMcentos:latest   MAINTAINERjohn#nowaddjavaandtomcatsupportinthecontainerADDjdk-8u162-linux-x64.tar.gz/u......
  • k8s:配置启动参数时,一个小小的技巧提示:参数是可以多次指定的,以最后指定的为准
    参数是可以多次指定的,以【最后】指定的为准!参数是可以多次指定的,以【最后】指定的为准!参数是可以多次指定的,以【最后】指定的为准!  例子:多次指定同一个参数,最后的配......
  • Ubuntu22.04 安装 K8S
    一、环境软件版本:服务版本操作系统ubuntuserver22.04LTS容器运行时​​containerd.io​​1.6.8-1k8s1.24.5网络插件calico3.24.1节点说明:k8s集群角色IP主机名安装组件......
  • k8S资源管理
    资源管理资源管理介绍在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种......
  • k8s健康状态----监控与日志
    一、背景监控和日志是大型分布式系统的重要基础设施,监控可以帮助开发者查看系统的运行状态,而日志可以协助问题的排查和诊断。在Kubernetes中,监控和日志属于生态的一部......