API对象上千个,有啥关联性,kubectl-tree一键搞定
关注【云原生百宝箱】公众号,获取更多云原生消息
"kubectl-tree 是一款强大的 kubectl 插件,通过 ownerReferences 实现 Kubernetes 对象之间的所有权关系探索。相较于 kubectl lineage,它不仅更全面理解 API 对象的逻辑关系,而且借助ownerReferences。这使得揭示 Kubernetes 中对象间复杂的所有权结构变得更加简便,为用户提供更直观、全面的视角,助力更深入的集群管理与分析。"
kubectl-tree
一个 kubectl 插件,用于通过ownerReferences
探索 Kubernetes 对象之间的所有权关系。
插件kubectl lineage
[1] 与kubectl tree
非常相似,但它只能理解 一些 API 对象之间的逻辑关系[2],而不需要ownerReferences。
安装插件管理器(Krew )
注意: krew 仅兼容
kubectl
v1.12或更高版本。
Krew 目前支持macOS/Linux: bash/zsh[3], fish[4] 和**Windows[5]**
macOS/Linux环境
Bash or ZSH shellsde
1.确保git
已安装。
2.运行此命令以下载并安装krew
:
(set -x; cd "$(mktemp -d)" &&OS="$(uname | tr '[:upper:]' '[:lower:]')" &&ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&KREW="krew-${OS}_${ARCH}" &&curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&tar zxvf "${KREW}.tar.gz" &&./"${KREW}" install krew
)
3.将$HOME/.krew/bin
目录添加到你的 PATH 环境变量。为此,需要在你的.bashrc
或者.zshrc
文件并添加如下内容:
# vim ~/.bashrc 在文件末尾添加一下内容
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
并重新启动你的shell。
或者直接使用如下命令,更方便快捷
echo 'export PATH=$HOME/.krew/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
4.运行kubectl krew
以检查安装。
$ kubectl krew
krew is the kubectl plugin manager.
You can invoke krew through kubectl: "kubectl krew [command]"Usage:kubectl krew [command]Available Commands:completion generate the autocompletion script for the specified shellhelp Help about any commandindex Manage custom plugin indexesinfo Show information about an available plugininstall Install kubectl pluginslist List installed kubectl pluginssearch Discover kubectl pluginsuninstall Uninstall pluginsupdate Update the local copy of the plugin indexupgrade Upgrade installed plugins to newer versionsversion Show krew version and diagnosticsFlags:-h, --help help for krew-v, --v Level number for the log level verbosityUse "kubectl krew [command] --help" for more information about a command.
Fish shell
1.确保git
已安装。
2.在你的终端中运行此命令以下载并安装krew
:
beginset -x; set temp_dir (mktemp -d); cd "$temp_dir" &&set OS (uname | tr '[:upper:]' '[:lower:]') &&set ARCH (uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/') &&set KREW krew-$OS"_"$ARCH &&curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/$KREW.tar.gz" &&tar zxvf $KREW.tar.gz &&./$KREW install krew &&set -e KREW temp_dir &&cd -
end
3.将$HOME/.krew/bin
目录添加到你的 PATH 环境变量。为此,为此,需要在你的config.fish
文件并添加如下内容:
set -gx PATH $PATH $HOME/.krew/bin
并重新启动你的shell。
-
1. 运行
kubectl krew
以检查安装。
Windows环境
-
1. 确保
git
已安装。 -
2. 从https://github.com/kubernetes-sigs/krew/releases页面下载`krew.exe`
-
3. 使用管理员权限启动
cmd.exe
。 -
4. 运行以下命令安装 krew:
.\krew install krew
-
5. 将
%USERPROFILE%\.krew\bin
目录添加到你的PATH
环境变量 -
6. 启动一个新的命令行窗口。
-
7. 运行
kubectl krew
以检查安装。
安装kubectl-tree
使用krew[6]插件管理器安装:
kubectl krew install tree
kubectl tree --help
演示
示例(Deployment):
示例 Kubernetes 部署对象层次结构
示例((Knative Service):
使用 Knative Service 的 Kubernetes 对象层次结构示例
示例(Agones Fleet)):
Agones Fleet 的 Kubernetes 对象层次结构示例
示例(Kserve Inferenceservices)):
Kserve 的 Kubernetes 对象层次结构示例
注意
默认情况下,插件将仅搜索与指定对象相同的命名空间中的“命名空间”对象。
可以使用-A
或--all-namespaces
标志来搜索所有命名空间中的命名空间和非命名空间对象。
引用链接
[1]
kubectl lineage
: https://github.com/tohjustin/kube-lineage[2]
API 对象之间的逻辑关系: https://github.com/tohjustin/kube-lineage#supported-relationships[3]
bash/zsh: https://krew.sigs.k8s.io/docs/user-guide/setup/install/#bash[4]
fish: https://krew.sigs.k8s.io/docs/user-guide/setup/install/#fish[5]
Windows: https://krew.sigs.k8s.io/docs/user-guide/setup/install/#windows[6]
krew: https://krew.sigs.k8s.io/
- END -
推荐阅读
-
叮,你收到一份来自CNCF的云原生景观简介
-
要魔改Kubernetes,我们可以从哪里扩展
-
问题排查太烦心,试试GPT的超能力
-
Copa:无需重建镜像,直接修补容器漏洞
-
玩转K8s网络:16张图带你从小白到专家
-
1000节点集群,5秒搭建好
-
流量何处来又往何处去,这次一目了然
-
Kubernetes CNI 插件选型和应用场景探讨
-
块/文件/对象存储难统一管理,试试这个集大成者
-
GPU越来越难买,如何提高利用率
-
监控外部服务太复杂?ServiceMonitor 和 PrometheusRule有妙招
-
容器快了,却不安全了,Rootless 安排上
-
还在Jenkins点点,快来体验Tekton的灵活自动化
-
懒人福音:LazyDocker轻松驾驭容器,操作高效省心
相关文章:

API对象上千个,有啥关联性,kubectl-tree一键搞定
关注【云原生百宝箱】公众号,获取更多云原生消息 "kubectl-tree 是一款强大的 kubectl 插件,通过 ownerReferences 实现 Kubernetes 对象之间的所有权关系探索。相较于 kubectl lineage,它不仅更全面理解 API 对象的逻辑关系,…...
java自定义工具类在List快速查找相同字段值对象
根据对象某一字段名,获取字段值,将List转换为Map中包含list,Key为字段值,Value为相同字段值的对象list,快速定位具有相同字段值的对象,转换之后便于在Map中根据字段值快速查找相同字段值的对象 //List转Map…...
codeforces Hello 2024 - C - Grouping Increases --- 题解
目录 Grouping Increases 题目描述: 思路解析: 代码实现: Grouping Increases 题目描述: 给你一个大小为n的数组a,你可以把数组a划分为两个子序列s和t,a中元素,要么在子序列s中,…...

STM32H5培训(一)总览
文章目录 1. 前言2. STM32H5系列MCU的特点和新功能包括性能提升、新外设和安全功能等3. STM32H5系列型号之间的区别和关键资源对比4. 性能和功能亮点6. 开发生态参考: 1. 前言 本篇主要介绍STM32H5系列MCU的特点和新功能,包括全新的M33内核、250M主频处…...

亚马逊云科技 WAF 部署小指南(五):在客户端集成 Amazon WAF SDK 抵御 DDoS 攻击...
方案介绍 在 WAF 部署小指南(一)中,我们了解了 Amazon WAF 的原理,并通过创建 WEB ACL 和托管规则防护常见的攻击。也了解了通过创建自定义规则在 HTTP 请求到达应用之前判断是阻断还是允许该请求。在 Amazon WAF 自定义规则中&am…...

高光谱分类论文解读分享之基于多模态融合Transformer的遥感图像分类方法
IEEE TGRS 2023:基于多模态融合Transformer的遥感图像分类方法 题目 Multimodal Fusion Transformer for Remote Sensing Image Classification 作者 Swalpa Kumar Roy , Student Member, IEEE, Ankur Deria , Danfeng Hong , Senior Member, IEEE, Behnood Ras…...

Trans论文复现:基于数据驱动的新能源充电站两阶段规划方法程序代码!
适用平台:MatlabYalmipCplex/Gurobi; 文章提出了一种电动汽车充电站的两阶段规划方法,第一阶段通过蒙特卡洛法模拟充电车辆需求和电池充放电数据来确定充电站位置;第二阶段通过数据驱动的分布鲁棒优化方法优化充电站的新能源和电池…...
将抖音视频转成MP3并下载
这篇是在上一篇的基础上写的,这篇负责抖音作者详情页的视频转声音提取,这篇需要用到后端。 本地启动后端后,在控制台输入对应代码,即可实现hover在封面上,按d一键下载音频 控制台代码 // 获取作者的视频列表var liEle…...

C程序训练:与输入有关的错误
在录入程序时有时稍不注意就可能录入错误的字符导致程序运行结果出现错误,下面举例说明。 下面程序的运行结果是错的,但程序又没有错,到底问题出现在哪呢? #include <stdio.h> int main() {FILE *fp;int i, k, n;fpfopen(…...

制作 CentOS Stream9 的U盘系统启动盘
一、简述 注:请勿用于商用,如有版权纠纷,于博主无任何关系。(仅用于学习研究使用) 由于CentOs Linux 7和CentOs Stream8终止日期是2024年,需要将系统升级到最新版本的CentOs Stream9,下面是刻录系统盘的操…...

Vulnhub靶机:driftingblues 1
一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:driftingblues1(10.0.2.17) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/entr…...

CloudCompare——点云空间圆拟合
目录 1.概述2.软件实现3.完整操作4.算法源码5.相关代码 本文由CSDN点云侠原创,CloudCompare——点云空间圆拟合,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 1.概述 CloudCompare软件中的To…...
解决POI报错POIXMLTypeLoader不存在的问题
问题: springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoaderat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet…...
关于rewriteBatchedStatements的源码分析
在之前的优惠券兑换码需求中,涉及批量写入问题,其中有一个关键的连接配置参数非常重要——rewriteBatchedStatements,当该值配置为true时,Statement将可能对批量插入sql进行重写。 何谓重写?原来提交的批量执行语句&a…...

自动化神器 Playwright 的 Web 自动化测试解决方案
1. 主流框架的认识 总结: 由于Selenium在3.x和4.x两个版本的迭代中并没有发生多大的变化,因此Selenium一统天下的地位可能因新框架的出现而变得不那么稳固。后续的Cypress、TestCafe、Puppeteer被誉为后Selenium时代Web UI自动化的三驾马车。但是由于这三…...
docker filebeat 将日志多级目录和多维json数据日志同步到es
注 使用的时候先调试调试配置,调试成功在尝试写入es,如果es写入失败就是es账户.密码/白名单.和index未创建的问题,细节可以留言 setup.template.priority 模板优先级 调整这个可以配置一台机器多个filebeat 容器启动 多级目录日志和多维josn日志结构 filebeat.inputs:- typ…...

【机器学习】模型参数优化工具:Optuna使用分步指南(附XGB/LGBM调优代码)
常用的调参方式和工具包 常用的调参方式包括网格搜索(Grid Search)、**随机搜索(Random Search)和贝叶斯优化(Bayesian Optimization)**等。 工具包方面,Scikit-learn提供了GridSearchCV和RandomizedSearchCV等用于网格搜索和随机搜索的工具。另外,有一…...
webview全屏处理,即插即用
去年双十一有个直播的需求,听起来很简单,技术也都很成熟,但是真的开始实现后,还是有不少坑的,首先第一个uc内核不支持webRTC协议,需要重新开发chrome内核的webview,其次webview全屏处理、悬浮窗…...

实录分享 | 央企大数据平台架构发展趋势与应用场景的介绍
分享嘉宾: 孟子涵-中国华能集团信息中心平台架构师 2021年华能就与Alluxio建立了合作,共同写了整个华能统一纳管的架构方案。这个方案我认为是现在我们在央企里边比较核心的一套体系,能让全集团所有我们认为重要的数字化资源实现真正的统一集…...

UE5 将类修改目录
有个需求,需要修改ue里面类的位置,默认在Public类下面,我想创建一个二级目录,将所有的类分好位置,方便查看。 上图为创建一个类所在的默认位置。 接下来,将其移动到一个新的目录中。 首先在资源管理器中找…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...

Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...
书籍“之“字形打印矩阵(8)0609
题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...

Springboot 高校报修与互助平台小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,高校报修与互助平台小程序被用户普遍使用,为…...
初级程序员入门指南
初级程序员入门指南 在数字化浪潮中,编程已然成为极具价值的技能。对于渴望踏入程序员行列的新手而言,明晰入门路径与必备知识是开启征程的关键。本文将为初级程序员提供全面的入门指引。 一、明确学习方向 (一)编程语言抉择 编…...