2019独角兽企业重金招聘Python工程师标准>>>
K9s Kubernetes CLI,可以个性化方式管理您的集群!
参考:
- 源码,https://github.com/derailed/k9s
- 使用方法,https://www.ctolib.com/amp/derailed-k9s.html
- 原文链接:https://medium.com/@fernand.galiana/if-you-k8s-please-try-k9s-82ea30eb9aa3
Why K9s?
首先我们得面对现实——Kubernetes及其周边生态系统的运营方式正变得越来越复杂。集群管理需要大量工具加以配合。当我在集群之上进行日常运营时,和大家一样,我也需要观察自己使用的各种Kubernetes资源、深入了解配置、设置以及在任务没能按照预期完成时追踪问题。这个流程通常需要使用大量令人头痛、易于混淆的命令,安装/操作用途单一的CLI工具,同时配合大量自定义bash脚本。除此之外,还有各类运行状态调整需要考虑……
我知道,Kubernetes作为一款技术解决方案正面临着诸多争议,但我个人通常选择在本地开发代码并面向本地minikube实例,最后才进行Docker化转换。一般来讲,我不需要在自己的集群之上部署整个应用程序来处理任何给定服务。我发现自己的代码以及配置与资源清单是一种连续、而非独立存在的活动。因此,我的日常Kubernetes例程通常包括启动一个或多个终端窗口,其中又细分为各类选项卡/窗格,又有部分选项卡/窗格内容纳着用于监控资源的监控命令,外加用于发出kubectl并构建命令的开放CLI。
K9s工作状态
终于有一天,我对这个极为烧脑的流程做出一番考量,并意识到完全可以通过一款简单的CLI工具来观察Kubernetes资源,在各种资源之间切换,检查清单、日志、监控事件并执行Pod,从而确保自己宝贵的桌面空间不至于被大量终端窗格所占据……
因此,我编写了一款用于实现上述目标的工具!我将其命名为K9s,其工作效果如下图所示。 K9s Pod视图
这是一款基于终端的UI,会以特定时间间隔(默认为2秒)监控Kubernetes资源,并允许我查看自己集群中的内容。
我可以使用ctx<enter>命令在开发集群与生产集群之间快速导航。这款CLI还允许我按照命名空间进行过滤操作,并对大部分Kubernetes资源执行只读操作(这项功能仍在开发当中……)。如果集群卡住,我可以使用?<enter>命令列出所有受支持的资源。
K9s安装与使用
安装
K9s 可用于 Linux, OSX 和 Windows 平台。
-
对于 Linux, Windows 和 Mac 的二进制安装包,下载到 release 页面。
-
对于 OSX,可以使用 Homebrew安装:
brew tap derailed/k9s && brew install k9s
-
从源码构建 K9s,使用 go 1.12 以上版本,需要:
-
Clone the repo
-
Set env var GO111MODULE=on
-
添加下面行到 go.mod 文件
-
replace (github.com/derailed/k9s => MY_K9S_CLONED_GIT_REPO )
-
构建并运行:
-
go run main.go
-
命令行
# List all available CLI options k9s -h # To get info about K9s runtime (logs, configs, etc..) k9s info # To run K9s in a given namespace k9s -n mycoolns # Start K9s in an existing KubeConfig context k9s --context coolCtx
预先检查
-
K9s 使用 256 colors terminal mode. On `Nix system make sure TERM is set accordingly.
export TERM=xterm-256color
K9s config file ($HOME/.k9s/config.yml)
K9s 保存配置 dot file 在 home directory。
NOTE: This is still in flux and will change while in pre-release stage!
k9s:# Indicates api-server poll intervals.refreshRate: 2# Indicates log view maximum buffer size. Default 1k lines.logBufferSize: 200# Indicates how many lines of logs to retrieve from the api-server. Default 200 lines.logRequestSize: 200# 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: pominikube:namespace:active: allfavorites:- all- kube-system- defaultview:active: dp
快捷键绑定
K9s uses aliases to navigate most K8s resources.
Command | Result | Example |
---|---|---|
: alias<ENTER> | View a Kubernetes resource | :po<ENTER> |
? | Show keyboard shortcuts and help | |
Ctrl-a | Show all available resource alias | select+<ENTER> to view |
/ filterENTER > | Filter out a resource view given a filter | /bumblebeetuna |
<Esc> | Bails out of command mode | |
d ,v , e , l ,... | Key mapping to describe, view, edit, view logs,... | d (describes a resource) |
: ctx<ENTER> | To view and switch to another Kubernetes context | : +ctx +<ENTER> |
:q , Ctrl-c | To bail out of K9s |