kubectl与 jq的用法

这篇具有很好参考价值的文章主要介绍了kubectl与 jq的用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景
在日常运维工作中,我们需要管理和操作大量的配置文件,这在使用 Kubernetes 集群管理应用时尤为常见。Kubernetes 提供了一个名为 ConfigMap 的资源对象,它用于存储应用的配置信息。有时,我们需要查找哪些 ConfigMap 包含特定的配置值,例如一个特定的 IP 地址或者字符串。

二、使用 kubectl 和 jq 搜索 ConfigMaps
kubectl 是 Kubernetes 的命令行工具,使用者可以通过它与 Kubernetes 集群进行交互。jq 是一个轻量级且灵活的命令行 JSON 处理器。结合这两个工具可以让我们更加方便地处理 JSON 格式的输出。

[root@master1 ~]# kubectl get cm --all-namespaces -o json | jq -r '.items[] | select(.data and (.data[] | "\(.metadata.namespace) \(.metadata.name)"'kubectl get cm -n mynamespace -o json | jq -r '.items[] | select(.data and (.data[] | contains("10.0.4.65"))) | .metadata.name'
jq: Unknown option -o
Use jq --help for help with command-line options,
or see the jq manpage, or online docs  at https://stedolan.github.io/jq

三、查找使用特定镜像的 Deployment
可能我们还想知道正在哪些 Deployment 中使用了特定的镜像:

[root@master1 ~]# kubectl get deploy --all-namespaces -o json | jq -r '.items[] | select(.spec.template.spec.containers[].image | contains("minio")) | "\(.metadata.namespace) \(.metadata.name)"'
minio minio

四、检查资源限制

[root@master1 ~]# kubectl get po --all-namespaces -o json | jq -r '
>   .items[] |
>   select(
>     .spec.containers[]?.resources?.limits?.memory // "" | contains("500Mi")
>   ) | "\(.metadata.namespace) \(.metadata.name)"'

此处我们搜索那些内存限制设为 “500Mi” 的 Pod。 jq 是一个功能强大的轻量级命令行 JSON 处理器,它在 Kubernetes 环境管理中充当了一个不可或缺的角色。通过结合 kubectl 的输出和 jq 的处理能力,可以快速发现和处理集群中的数据。

五、使用 jq 过滤和映射数据

[root@master1 ~]# kubectl get cm --all-namespaces -o json | jq -r '.items[] | {name: .metadata.name, creationTime: .metadata.creationTimestamp}'

六、使用 jq 函数
jq 有一组内建的函数可以用来处理数据。若要对时间戳进行格式化,我们可以使用 fromdate 函数:

[root@master1 ~]# kubectl get cm --all-namespaces -o json | jq -r '.items[] | {name: .metadata.name, creationTime: (.metadata.creationTimestamp | fromdate)}'

七、过滤特定的字段
jq 允许您选择性地查看所需的特定字段。例如,若要在输出中只包含特定名称的 ConfigMaps:

kubectl get cm --all-namespaces -o json | jq -r '.items[] | select(.metadata.name | test("deploy.*")) | .metadata.name'

八、统计数量
如果想统计匹配特定条件的 ConfigMaps 的数量,可以使用 jq:

kubectl get cm --all-namespaces -o json | jq '[.items[] | select(.data and (.data[] | contains("10.0.4.65")))] | length'

九、对 JSON 数组和对象进行高级操作
排序和唯一化

kubectl get pods --all-namespaces -o json | jq '[.items[] | {name: .metadata.name, namespace: .metadata.namespace, timestamp: .metadata.creationTimestamp}] | unique_by(.name, .namespace) | sort_by(.timestamp)'

分组和分类文章来源地址https://www.toymoban.com/news/detail-813687.html

kubectl get pods --all-namespaces -o json | jq '[.items | group_by(.metadata.namespace)[] | {namespace: (.[0].metadata.namespace), pods: map(.metadata.name)}]'

到了这里,关于kubectl与 jq的用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云原生Kubernetes:kubectl管理命令

    目录 一、理论 1.K8S资源管理方法 2.kubectl 管理命令 3.项目的生命周期 4.Kubernetes 服务发布方式 5.金丝雀发布(Canary Release)部署 6.声明式管理方法 二、实验  1.kubectl 管理命令 2.项目的生命周期 3.金丝雀发布(Canary Release)部署 4.声明式管理方法 三、问题 1.为何每个pod有两个标签 四

    2024年02月09日
    浏览(38)
  • kubernetes调试利器——kubectl debug工具

      通常情况下,业务容器所使用的镜像是非常精简的,而一旦业务容器出现问题,通过 kubectl exec 进入到容器时,我们会发现自己需要使用的工具都没有,也无法通过 apt, apt-get, yum 等包管理工具下载需要的工具。   想要解决这个尴尬的窘境,有两种手段,其一是提前把需

    2024年02月15日
    浏览(40)
  • Kubernetes入门 三、命令行工具 kubectl

    kubectl 是 Kubernetes 集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署。 使用以下语法从终端窗口运行 kubectl 命令: 参数: command:指定要对资源执行的操作,如:create、get 、delete 等。 type:指定资源的类型,如:deployment 、

    2024年02月13日
    浏览(32)
  • Kubernetes系列-kubectl命令-pod相关

    1. 获取集群全量pod列表 或者 2. 获取制定ns中的pod列表 3. 查看pod所在节点 4. 查看pod内存使用情况 5. 查看某pod的相关日志 --tail=n:指定查看多少行日志。 6. 查看pod配置 7. 查看pod所属node节点 8. pod扩容 9. pod缩容 10. 查看pod详细信息 11. 查看pod的资源配置 12. 登陆pod  

    2024年02月16日
    浏览(38)
  • Linux6.33 Kubernetes kubectl详解

    第三章 LINUX Kubernetes kubectl详解 一、陈述式资源管理方法 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口 2.kubectl 是官方的CLI命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为 apiserver 能识别的信息,进而实现管理

    2024年02月14日
    浏览(35)
  • 常见的Kubernetes命令之kubectl命令详解

    资源查看命令 这些命令用于查看 Kubernetes 集群中的资源状态和信息: kubectl get nodes :查看所有节点的状态和信息。例如节点的名称、IP 地址、状态、版本等。 kubectl get pods :查看所有 pod 的状态和信息。例如 pod 的名称、所在节点、状态、IP 地址、容器状态等。 kubectl get se

    2024年02月16日
    浏览(40)
  • Kubernetes 命令行工具 kubectl 安装和使用教程

    管理 Kubernetes 集群资源的唯一入口是通过调用 apiserver 的接口,kubectl 是官方提供的 CLI 命令行工具,kubectl 将用户在命令行输入的命令组织并转化为 apiserver 能识别的信息,进而实现对 Kubernetes 各种资源的管理功能。使用 kubectl 可以实现部署应用程序、检查和管理集群资源、查

    2024年02月06日
    浏览(42)
  • 掌握 Kubernetes 故障排除技巧:kubectl命令的基本指南

    Kubernetes 彻底改变了容器编排,简化了应用程序的管理和扩展。然而,与任何复杂系统一样,Kubernetes 集群也会遇到问题,需要及时解决才能保持最佳性能和可靠性。 在本文中,我们将深入探讨必要的 kubectl 命令,这些命令是诊断和排除 Kubernetes 集群问题不可或缺的工具 。无

    2024年03月15日
    浏览(45)
  • Kubernetes系列-通过kubectl实现重启pod的方法

    kubectl 没有 restart pod 这个命令,主要是由于在 k8s 中pod 的管理属于rs 等控制器,并不需要手动维护,但有时更新了yaml文件后,期望破都能够\\\"重启\\\"重新加载yaml文件,比如修改了configmap 的配置文件后,希望重启pod 加载配置,此时就需要 “重启” Pod。而\\\"重启\\\"准确地来说是重建

    2024年02月12日
    浏览(46)
  • Kubernetes学习笔记-在多个集群中使用kubectl 20230623

    一、在Minikue和Google Kubernetes引擎之间切换 切换到Minikube $minikube start Starting local kubernetes cluster... ... Setting up kubeconfig... kubectl is now configured to use the cluster 从Minikube切换到GKE后,可以通过停止Minikube并重新切换回来。这时kubectl会被再次重新设置以适用于Minikube集群 切换到GKE $gcl

    2024年02月10日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包