前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K8S 资源可视化利器:Kubectl-Graph

K8S 资源可视化利器:Kubectl-Graph

作者头像
郭旭东
发布2020-12-31 10:43:46
1.6K0
发布2020-12-31 10:43:46
举报
文章被收录于专栏:云原生工具箱云原生工具箱

前言

最近接手了一个规模比较大的集群,光是整理集群中的资源就使人头昏眼花,虽然我自认 kubectl 使用的已经十分熟练,但是上千个 kubernetes resource 看下来还是不堪重负。在不能为集群安装任何其他工具的情况下,可以改造的就只有我自己的 client 端,也就是 kubectl 了。本文就介绍一个有趣的 kubectl 插件:kubectl-graph

krew

要介绍 kubectl 的 plugin 机制,首先要介绍的就是 krew[1] 。krew 是 kubernetes CLI SIG[2] 项目,是用来管理 kubectl 插件的工具,作用类似于 yum 和 brew,可以用来搜索、安装和管理 kubectl 插件。

kubectl-graph

kubectl-graph 是一款可视化 kubernetes resource 及资源间关系的 kubectl 插件,可以将集群中的资源以关系图的方式进行展示。

目前支持两种展示方法:

•Graphviz[3]•Neo4j[4]

前期准备

除了 kubectl,由于需要进行绘图,所以还需安装上面两种展示方式的依赖。

Graphviz

安装 Graphviz 用来生成关系图,需要使用 dot CLI 工具,并将图像输出为 SVG 格式:

代码语言:javascript
复制
$ brew install graphviz

Neo4j

Neo4j 是一个高性能的 NoSQL 图形数据库,它将结构化数据存储在网络上而不是表中,很适合用来展示 kubernetes resource 之间的关系,但 Neo4j 的依赖较多,需要一点时间来安装。

安装 Java

Neo4j 依赖 Java 环境,如果本机上没有安装 Java,请先前往 http://www.java.com 下载并安装。

安装 cypher-shell

因为需要连接到 Neo4j 数据库,所以要安装 cypher-shell CLI:

代码语言:javascript
复制
$ brew install cypher-shell

安装 Neo4j Desktop(可选)

接下来就是 Neo4j 本身的安装,我这里使用了 Neo4j Desktop,使用和管理起来比较方便,也是使用 brew 安装:

代码语言:javascript
复制
$ brew install --cask neo4j

安装好后,运行 Neo4j Desktop,完成设置即可

设置 neo4j

使用 docker 运行 Neo4j(可选)

当然,如果你感觉安装 Neo4j Desktop 比较麻烦,也可以使用 docker 运行 Neo4j:

代码语言:javascript
复制
$ docker run --rm -p 7474:7474 -p 7687:7687 -e NEO4J_AUTH=none neo4j

只不过后续查看关系图时,需要使用浏览器访问 http://localhost:7474 来查看结果。

安装 kubectl-graph

插件的安装方式比较简单,如果你使用的是 kubectl 1.19 之前的版本:

代码语言:javascript
复制
$ kubectl-krew install graph

使用 kubectl 1.19 之后的版本:

代码语言:javascript
复制
$ kubectl krew install graph

使用方式

安装完成后,就可以开始绘制 kubernetes resource 关系图了。

Graphviz

使用 kubectl graph 命令获取 kubec-system 中正在运行的 pod,并通过管道传递给 dot

代码语言:javascript
复制
$ kubectl graph pods --field-selector status.phase=Running -n kube-system | dot -T svg -o pods.svg

查看 pods.svg ,资源果然很多:

pods.svg

Neo4j

Neo4j 可以展示更为丰富且美观的关系图。在导入 kubernetes resource 之前,需要创建一个 Neo4j 数据库:

创建 neo4j 数据库

数据库创建好后,点击 Start 运行并点击 Open 打开 Neo4j Browser

打开数据库

执行命令将 kubernetes resource 导入 Neo4j:

代码语言:javascript
复制
kubectl graph all -n kube-system -o cypher | cypher-shell -u neo4j -p <your-pass>

这里的 -u 需要输入 neo4j 而不是你创建的数据库名称,Neo4j Browser 上也有提示:

之后就可以在 Neo4j 上查看了,输入查询语句:MATCH (n) RETURN n

关系图

这时一个美观的 kubernetes resource 关系图就出现了。

结语

kubectl 还有很多好用且有趣的 plugin,后续笔者会介绍如何开发一个 kubectl plugin 并分享更多有趣的 plugin。

引用链接

[1] krew: https://krew.sigs.k8s.io/ [2] CLI SIG: https://github.com/kubernetes/community/blob/master/sig-cli/README.md#cli-special-interest-group [3] Graphviz: https://graphviz.org/ [4] Neo4j: https://neo4j.com/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • krew
  • kubectl-graph
  • 前期准备
    • Graphviz
      • Neo4j
        • 安装 Java
        • 安装 cypher-shell
        • 安装 Neo4j Desktop(可选)
        • 使用 docker 运行 Neo4j(可选)
      • 安装 kubectl-graph
      • 使用方式
        • Graphviz
          • Neo4j
          • 结语
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档