通常情况下,我们自行部署 k8s 集群之后,要么使用 kubectl 命令做集群管理,要么使用 bashbroadUI 管理界面来管理集群。最近,发现了一个基于终端且比较好用的项目,可以让我们快速查看、导航、观察并解决日常我们使用 Kubernetes 中的一些问题,这就是 k9s 项目。

1. 工具介绍

日常使用终端的你,可谓是一件利器!

k9s 是一个基于 curses 的全屏终端 UI 管理工具,可以与 Kubernetes 集群进行交互,可以观察系统资源,在各种资源之间切换,检查清单、日志、监控事件并执行 Pod 等,从而确保桌面空间不至于被大量终端窗格所占据。

k9s 会以特定时间间隔监控 Kubernetes 资源,默认为 2 秒,并允许查看自己集群中的内容。它可以一目了然地提供了运行中 Pod、日志和部署的可视化视图,以及对 Shell 的快速访问。以下是该工具的主要特性:

  • 信息触手可及

    • 跟踪 Kubernetes 集群中运行的资源的实时活动
    • 处理 Kubernetes 标准资源和自定义资源定义
  • 集群指标
    • 跟踪与 Pod,容器和节点等资源关联的实时指标
  • 高级特性
    • 提供标准的集群管理命令,例如日志,扩展,端口转发,重启
    • 定义自己的命令快捷方式,以通过命令别名和热键快速导航
    • 支持插件扩展 k9s 来创建属于自己的集群操作管理命令
    • 强大的过滤模式,允许用户向下钻取并查看与工作负载相关的资源
  • 外观可定制
    • 通过 K9s 皮肤定义自己的外观
    • 自定义/安排要按资源显示的列

  • Pulses-集群事务状态的顶级仪表板

  • XRay-挖掘群集资源并查看其依赖性

  • Pods -列出你的 Pods 状态和资源消耗

  • Logs-查看容器日志并与之交互

  • RBAC-查看您的集群上的授权的用户、方式等

2. 安装方式

安装起来虽然比较简单,但是有点不怎么给力!

K9s 采用 Go 语言开发,可运行于 LinuxmacOS 和 Windows 平台。K9s 安装非常的简单,官方已经为我们提供了各平台的二进制安装包,只需下载对应版本即可。

  • MacOS
# Homebrew
$ brew install derailed/k9s/k9s
  • Linux
# LinuxBrew
$ brew install derailed/k9s/k9s# PacMan
$ pacman -S k9s
  • Build
# Clone the repo
$ git clone https://github.com/derailed/k9s.git# Build and run the executable
$ make build && ./execs/k9s
  • Docker
# 指定k8s的配置文件路径
$ docker run --rm -it -v $KUBECONFIG:/root/.kube/config derailed/k9s# k8s配置文件的默认路径
$ docker run --rm -it -v ~/.kube/config:/root/.kube/config derailed/k9s

3. 使用方式

k9s 和 dashboard 可以理解为 vim 和 idea 之间的关系!

K9s 自带有一些参数,可以使用该参数以不同的配置启动该工具,比如你需要看 Pod 相关的信息。

  • 命令行启动参数
# 列出所有可用的CLI选项
$ k9s help# 获取有关K9s运行时的信息
$ k9s info
$ k9s info logs
$ k9s info configs# 在给定的名称空间中运行
$ k9s -n mycoolns# 运行K9s在pod视图中启动
$ k9s -c pod# 以只读模式启动K9s;该模式禁用所有修改命令
$ k9s --readonly
  • 界面操作快捷键
快捷键命令 对应含义说明 举例说明
Ctrl-a 显示所有可用的资源别名
? 显示键盘快捷键和帮助
<Esc> 退出视图/命令/过滤器模式
:alias_name 按名称复数/单数/简称或别名查看资源 :po
:alias_name namespace 在给定的名称空间中按名称查看资源 :po fred_ns
/filter 筛选出给定筛选器的资源视图 /bumblebeetuna
/-f filter 模糊过滤器给定一个过滤器的资源视图 /-f mik
/-l label-selector 根据标签过滤资源视图 /-l app=fred
dyel,… 键映射描述,查看 YAML,编辑,查看日志
:ctx 查看并选择另一个 Kubernetes 上下文 :ctx
:ctx + context_name 按名称切换到给定上下文 :ctx fred_context
:ns 查看并选择另一个名称空间 :ns
:screendump:sd 查看所有保存的资源
Ctrl-d 删除资源(TAB / ShiftTab 和 ENTER 确认)
Ctrl-z 切换错误缩放以直接跳转到有问题的资源
Ctrl-w 切换宽栏显示
Ctrl-k 杀死资源(无确认对话框!)
:qCtrl-c 退出 K9s 工具

4. 简单使用

主要演示一些常用的命令参数的效果!

启动后,会弹出 k9s 的基于文本的用户界面。在没有指定命名空间标志的情况下,它会向你显示默认命名空间中的 Pod。通过快捷键来导航 k9s,可以随时使用方向键和回车键来选择列出的项目。可能会注意到 k9s 设置为使用 Vim 命令键,包括使用 J 和 K 键上下移动等。

  • k9s

    • 0:显示在所有命名空间中的所有 Pod
    • d:描述所选的 Pod
    • l:显示所选的 Pod 的日志
    • y:查看 YAML 文件
    • e:编辑 YAML 文件
    • d:查看键映射描述
    • :svc:跳转到服务视图
    • :deploy:跳转到部署视图
    • :namespace:跳转到命名空间视图
    • :cj:跳转到 cronjob 视图,查看集群中计划了哪些作业
    • :rb:跳转到角色绑定视图,用于基于角色的访问控制(RBAC)管理

  • k9s info

    • 运行该命令,会告诉我们该应用程序要在哪里找它的配置文件。
$ k9s info____  __.________
|    |/ _/   __   \______
|      < \____    /  ___/
|    |  \   /    /\___ \
|____|__ \ /____//____  >\/            \/
Configuration:   /Users/jess/.k9s/config.yml
Logs:            /var/folders/5l/xxx/T/k9s-jess.log
Screen Dumps:    /var/folders/5l/xxx/T/k9s-screens-jess# 查看k9s的日志
$ tail -f /var/folders/5l/xxx/T/k9s-jess.log# 进入k9s的调试模式
$ k9s -l debug
  • k9s -n namespace

    • 通过指定 namespace 命名空间,我们可以将注意力集中在给定的命名空间上。

5. 配置文件

配置文件中主要定义一些使用上面的默认方式

K9s 将其配置保存在主目录 $HOME/.k9s 中的 .k9s 目录中。主要配置文件名为config.yml 并存储各种 K9s 特定位。k9s 将更新此文件以存储当前视图和名称空间信息。

# config.yml
k9s:# Represents ui poll intervals. Default 2secsrefreshRate: 2# Set to true to hide K9s header. Default falseheadless: false# Indicates whether modification commands like delete/kill/edit are disabled. Default is falsereadOnly: false# Toggles icons display as not all terminal support these chars.noIcons: false# Logs configurationlogger:# Defines the number of lines to return. Default 100tail: 200# Defines the total number of log lines to allow in the view. Default 1000buffer: 500# Represents how far to go back in the log timeline in seconds. Default is 5minsinceSeconds: 300# Go full screen while displaying logs. Default falsefullScreenLogs: false# Toggles log line wrap. Default falsetextWrap: false# Toggles log line timestamp info. Default falseshowTime: false# Indicates the current kube context. Defaults to current contextcurrentContext: minikube# Indicates the current kube cluster. Defaults to current context clustercurrentCluster: minikube# Persists per cluster preferences for favorite namespaces and view.clusters:cooln:namespace:active: cooliofavorites:- cassandra- defaultview:active: pofeatureGates:# Toggles nodeshell support. Allow K9s to shell into nodes if needed. Default false.nodeShell: false# Provide shell pod customization of feature gate is enabledshellPod:# The shell pod image to use.image: killerAdmin# The namespace to launch to shell pod into.namespace: fred# The resource limit to set on the shell pod.limits:cpu: 100mmemory: 100Mi# The IP Address to use when launching a port-forward.portForwardAddress: 1.2.3.4minikube:namespace:active: allfavorites:- all- kube-system- defaultview:active: dp

6. 总结说明

对于日常经常需要操作 k8s 的运维人员来说却是很有帮助!

除了上述的功能以外,k9s 还有其他比较实用的功能,比如支持自建命令别名、自定义热键方式、支持自定义插件、还支持自定义终端界面显示以及资源显示顺序和组合。这些在官网中,给出了一些简单的示例说明和配置方式,基本可以做到,看了之后就可以自行 DIY 了。

了解你的工具并掌握做事情的“硬道理”很重要。还有一点很重要的是要记住,就管理而言,重要的是要更聪明地工作,而不是更努力。使用 k9s,就是我践行这个目标的方法。

7. 参考链接

授人玫瑰,手有余香!

  • Speed up administration of Kubernetes clusters with k9s
  • k9s:你没看错,这是一个加速 k8s 集群管理的工具

k9s加速k8s集群管理相关推荐

  1. 三层架构项目如何发布_以k8s集群管理为例,大牛教你如何设计优秀项目架构

    架构设计一直是技术人的关注热点,如何设计一个更优的架构对于实际的业务来说至关重要.本文腾讯云专家将从自身从事的一个k8s集群管理项目为例,重点剖析在项目开发过程中的三次架构演进历程,即针对项目最早版本 ...

  2. 工商银行:应用多k8s集群管理及容灾实践

    摘要:在华为开发者大会(Cloud)2021上,工商银行Paas云平台架构师沈一帆发表了<工商银行多k8s集群管理及容灾实践>主题演讲,分享了工商银行使用多云容器编排引擎Karmada的落 ...

  3. dao层如何调用对象_以k8s集群管理为例,大牛教你如何设计优秀项目架构

    架构设计一直是技术人的关注热点,如何设计一个更优的架构对于实际的业务来说至关重要.本文腾讯云专家将从自身从事的一个k8s集群管理项目为例,重点剖析在项目开发过程中的三次架构演进历程,即针对项目最早版本 ...

  4. k8s集群管理(一)

    cfssl 工具 cfssl-certinfo 验证证书信息 用法: cfssl-certinfo -cert xxx.pem cfssl-certinfo -domain www.baidu.com ...

  5. 火山引擎李玉光:字节跳动大规模K8s集群管理实践

    嘉宾 | 李玉光   整理 | 贾凯强 出品 | CSDN云原生 2022年5月31日,在CSDN云原生系列在线峰会第6期"K8s大规模应用和深度实践峰会",火山引擎资深云原生架构 ...

  6. 以k8s集群管理为例,大牛教你如何设计优秀项目架构

    一.前言 架构设计一直是技术人的关注热点,如何设计一个更优的架构对于实际的业务来说至关重要.本文腾讯云专家将从自身从事的一个k8s集群管理项目为例,重点剖析在项目开发过程中的三次架构演进历程,即针对项 ...

  7. 备战双11 蚂蚁金服10k规模k8s集群管理设计分享笔记

    分享嘉宾:张勇(花名:沧漠)蚂蚁金服技术专家,主要负责蚂蚁金服 PaaS 平台.K8s 集群管理系统设计.长期关注云原生领域开源社区,目前聚焦于如何增强 Kubernetes Node 能力和提升集群 ...

  8. k8s开发基础-WeopsWay自动化运维平台之多k8s集群管理

    多种公有云以及本地虚拟机.k8s容器环境等,平时管理起来也不是很方便.想找一个免费的并且适合自己的多云管理平台又很难,这也是决定自己扣钉的初衷,从运维的角度思考开发,从开发的角度思考运维.疫情的这两年 ...

  9. 强大多云混合多K8S集群管理平台Rancher入门实战

    文章目录 概述 定义 为何使用 其他产品 安装 简述 规划 基础环境 Docker安装 Rancher安装 创建用户 创建集群 添加Node节点 配置kubectl 创建项目和名称空间 发布应用 偏好 ...

  10. 360开源k8s集群管理平台:wayne的使用与介绍

    公司私有化部署的调研继续进行,之前已经完成了一个服务的k8s部署(一个Python服务Dokcer化并k8s布署实例)和搭建了自己的私有仓库(harbor搭建与使用).这篇文章来介绍一个 k8s 集群 ...

最新文章

  1. element UI 选择器 踩的坑 获取到了value 显示不出对应的 value
  2. Camera框架初探
  3. armv8/armv9的简介-学习这一篇就够了
  4. 【CTF解题】BCTF2018-houseofatum-Writeup题解
  5. python opencv cv2.imdecode()函数(从内存中的缓冲区读取图像)
  6. sigmoid function vs softmax function
  7. 使用SAP云平台portal服务将SAP UI5应用部署到portal上
  8. 畅通工程 HDU - 1863
  9. html5退出全屏触发的方法_在实战中学??typescript - 实现浏览器全屏(100行)
  10. Holer实现手机APP应用外网访问本地WEB应用
  11. python的矩阵表示_Python 稀疏矩阵表示
  12. logback-spring.xml 文件路径 相对路径_Web前端必会知识点:VUE路径问题解析-Web前端教程...
  13. 一致性hash算法学习
  14. TOP 1%的软件工程师和其他 99%有什么不同?
  15. winform 图片压缩大小为原图的一半_图片压缩指定大小?!这款神奇的工具有必要了解一下...
  16. “清华同方同传”By软件:同方易教管理平台 V2.4
  17. java语言扫雷游戏的实验设计_java扫雷游戏计算机毕业设计中期检查表、中期报告.doc...
  18. ARM920T S3C2440 的中断系统
  19. 页面显示\n\tat的问题
  20. android gpu 视频编码,Android Mp4视频录制(OpenGL实现篇,附DEMO)

热门文章

  1. echarts 中国地图——迁徙流向图
  2. 内网渗透(一)——本机信息收集
  3. 基于UDP的网络群聊系统
  4. attachEvent与addEventlistener兼容性
  5. 正确姿势使用TraceView工具
  6. Java随机数的使用
  7. 一个“技术文化人”的片段感悟
  8. Qt Qml 开发超高清 4K、8K 视频直播视频客户端
  9. jj斗地主服务器维护几点能好使啊,斗地主规则
  10. c++有关iostream和iostream.h