• 查看集群中的容器镜像


    前提条件

    • 您必须有一个K8S集群
    • 在执行 kubectl 命令的机器上任意位置创建一个空白目录用于本例子的执行。本文假设后续所有命令的当前目录都是此时创建的这个目录。

    # 查看所有名称空间总的容器

    • 执行命令,获取所有名称空间中的所有 Pod

      kubectl get pods --all-namespaces    
      

    使用 -o jsonpath={..image} 参数,输出结果将格式化为只包含容器镜像名字的形式。该参数将递归地查找 JSON 数据中所有 image 字段,例如:

    kubectl get pods --all-namespaces -o jsonpath={..image}
    

    参考 jsonpath reference

    • 了解如何使用 jsonpath

    使用工具 trsortuniq 格式化输出结果

    • 使用 tr 将空格替换为新的行
    • 使用 sort 对结果排序
    • 使用 uniq 对镜像使用计数
    kubectl get pods --all-namespaces -o jsonpath="{..image}" |tr -s '[[:space:]]' '
    ' |sort |uniq -c
    
    • 此命令将递归返回所有 image 字段。

    此外,也可以用 Pod 中 image 字段的绝对路径来查找容器的镜像名字,可以规避 image 字段重复出现的情况。

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

    Jsonpath 的解析如下:

    • .items[*]:每一个返回值
    • .spec: 获取 spec
    • .containers[*]: 每一个 container
    • .image:获取 image

    注意

    如果通过名字查找 Pod,例如 kubectl get pod nginx,由于返回结果只有一个 Pod,此时,.items[*] 这一部分应该从 jsonpath 中移除。

    # 按Pod查找容器

    输出结果可以通过 rannge 操作遍历

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

    # 按Pod的label查找容器

    使用 -l 参数,可以查找指定标签的 Pod,下面的例子中只查找带有 app=nginx 标签的 Pod:

    kubectl get pods --all-namespaces -o=jsonpath="{..image}" -l app=nginx
    

    # 按名称空间查找容器

    使用 --namespace 参数,可以查找指定名称空间下的 Pod,下面的例子只查找 kube-system 名称空间中的 Pod:

    kubectl get pods --namespace kube-system -o jsonpath="{..image}"    
    

    # 使用go-template罗列容器

    除了 jsonpath 之外,kubectl 支持使用 go-template

    格式化输出结果:

    kubectl get pods --all-namespaces -o go-template --template="{{range .items}}{{range .spec.containers}}{{.image}} {{end}}{{end}}"
    
  • 相关阅读:
    2020年MongoDB 企业应用实战 基础 复制集 分片集群
    2020年Redis5.0 从入门到企业应用实战
    2020年Jumpserver1.5.8企业生产部署指南
    python单例与数据库连接池
    python 异常处理
    python 正则
    python 多线程
    python 队列
    python 闭包与装饰器
    程序员面试资源集锦
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/12988299.html
Copyright © 2020-2023  润新知