简介

在没有Web版的Dashboard的情况下,您可以使用命令行命令来管理您的Kubernetes集群。这使得您可以轻松地执行各种操作,例如查看资源、编辑资源、删除资源等。

资源监视:使用K9s,您可以轻松地监视和管理Kubernetes集群中的各种资源,例如Pod、Deployment、Service和ConfigMap等。
资源修改:您可以使用K9s的资源编辑功能来修改这些资源,例如更新Pod的副本数量或更改Service的类型。
K9s还提供了强大的资源搜索功能,使您可以快速查找特定的资源。

安装

K9s 可用于 Linux、macOS 以及 Windows 平台

地址:https://github.com/derailed/k9s

Linux

1
2
[root@localhost ~]# wget https://github.com/derailed/k9s/releases/download/v0.21.7/k9s_Linux_x86_64.tar.gz
[root@localhost ~]# tar -zxf k9s_Linux_x86_64.tar.gz -C /usr/local/bin

mac

1
brew install k9s

验证

1
k9s info

命令详解

以只读权限运行

k9s为用户提供了方便的管理k8s资源的方式,同时也带来了安全上的风险,为了避免误操作对环境造成影响,我们可以在启动k9s时指定参数,以只读方式运行:

1
k9s --readonly

显示帮助信息与键盘组合功能

进入K9S命令行界面后,直接输入?(注意不是: ?), 会显示如下的帮助界面,提示了每个键盘组合的功能, 请注意,在不同界面下, 按下?键显示的是对当前界面的帮助提示,下面的截图是在alias界面下的帮助信息

基本使用

键盘组合功能详细说明
<c>复制选中的内容只会复制其中一个Column, 例如如果在Pods界面,则只会复制Pod的Name, 可以在剪切板中使用
<ctrl-r>刷新当前显示的界面刷新当前界面显示的资源及其状态
<shift-key>按某个column排序显示如在pods界面,想要按pod名排序,可以按下<shift-n>,如果想按CPU占用排序,可以按下<shift-c>, 想要按IP地址排序,可以按下<shift-i>, 注意,排序时不能打开大写锁,否则功能会不一样,例如shift-I的功能不是按IP地址排序,而是修改pod的image
<space>标记选中资源被标记的资源会在k9s界面中高亮显示
<d>显示资源描述等同于运行kubectl describe命令
<v>view
<y>显示资源的yaml文件内容等同于kubectl get xxx -o yaml命令
<e>编辑选中的资源进入编辑后,默认是vim编辑器,完成后:wq退出后立即生效
<l>显示pod的日志显示log的日志信息,可以按<w>键切换显示的格式(自动换行)
0和 w,0代表查看日志的尾部,即最新日志,w代表日志自动换行。
<s>快速访问(bash)该命令等价于kubectl exec pod /bin/sh。先用ESC退回Pod界面,再按下s,就会进入到容器的Shell命令行。如果一个Pod包含了多个Container,则会进入Container界面让你选择要进入的Container。
<r>重新启动资源重新启动资源(例如,重新启动 Pod)。
<ctrl-d>删除资源删除前会提示确认
<ctrl-k>杀死资源强制删除,删除前不会有提示信息
<ctrl-w>显示资源的更多信息等同于命令kubectl get xxx -o wide
<ctrl-z>切换显示错误资源按一下就只显示状态错误的资源,再按一下就显示所有资源
ctrl-a or :alias显示集群所有的资源和它们的缩写例如service的缩写是svc
<: 资源类型>显示某种类型的所有资源常用的有: : ns(显示所有namespace),: deploy (显示所有deployment), : pods(显示所有pods)等, 资源类型可以写全称也可以写缩写,如service的缩写是svc, statefulset的缩写是sts, daemonset的缩写是ds.
同时也可以在deploy界面输入<s>进行调整副本数,如下:
<ctrl-c> or :q退出k9s退出k9s界面工具
/<filter>过滤例如输入 /nginx,则过滤所有包含nginx字样的资源
/!filter逆过滤器去除所有匹配的资源。不支持日志过滤
/-l label-selector根据labels过滤资源
/-f filter模糊匹配过滤
<esc>退出 浏览/命令/过滤 模式
Shift+f等同于kubectl port-forwardexit退出命令行界面输入快捷键Shift+f进入PortForward界面。
此时使用Tab进行上下切换。确认后本地开一个新的终端访问测试即可。
:po用资源名或者缩写来浏览某一类资源接受单数、复数、缩写或者别名。例如po,pod,pods,v1/pods
:po namespace在指定的ns里面浏览资源

进阶使用

上面介绍的是一些基本的,常用的键盘组合,实现了大部分的对资源的增删改查功能, 如果你是一个资深的kubernetes管理员,你通常还需要关心:

  • 多个集群的管理
  • 集群状态监控
  • 快速过滤关注的资源
  • kubernetes事件的跟踪
键盘组合功能详细说明
<: ctx>查看kubernetes上下文列表(即集群列表)查看所有可访问的k8s集群,选中某个集群后回车可使用其配置文件,连接对应的集群
<: ctx name>连接指定K8S集群连接到name指定的k8s上下文名称的集群
<: pulses>/<: pu>集群监控面板如图可以显示集群的资源使用情况以及健康状态,如下图,显然有一个pod处于错误状态,根据顶部提示,按4可以进入到pods界面查看,再按<ctrl-z>可以查看错误的pod
<: xray resource_type [namespace]>查看资源关联关系如:<: xray deployments><: xray deployments default>, 分别是查看所有namespace/指定namespace下以deployments为维度的各资源的联系,不同的资源类型会用不同的图标表示,如下图
<: popeye>集群状态评分集群的每个资源都会被评分(0 - 100),综合起来会给集群一个整体评分(0-100)和等级(A/B/C),如下图:img
选中某项具体的资源,按下回车键,会显示更加详细的评价信息,如选中daemonsets, 会显示具体扣分的原因,如下图,会因为没有为port命名和没有设置资源限制而影响评分
请添加图片描述
<: crb>/<: clusterrolebinding>查看RBAC可以直观的查看集群的RBAC信息, 执行命令后,可以选中某个具体的Clusterrolebinding, 回车查看详细权限,如下图, 查看k9s这个clusterrole的具体权限:请添加图片描述
请添加图片描述