一般状况下,咱们自行部署 k8s 集群以后,要么使用 kubectl 命令作集群管理,要么使用 bashbroad 的 UI 管理界面来管理集群。最近,发现了一个基于终端且比较好用的项目,可让咱们快速查看、导航、观察并解决平常咱们使用 Kubernetes 中的一些问题,这就是 k9s 项目(以前的文章中有过相关的一些介绍:轻松管理 Kubernetes 集群的7个工具)。html
平常使用终端的你,可谓是一件利器!node
k9s 是一个基于 curses 的全屏终端 UI 管理工具,能够与 Kubernetes 集群进行交互,能够观察系统资源,在各类资源之间切换,检查清单、日志、监控事件并执行 Pod 等,从而确保桌面空间不至于被大量终端窗格所占据。git
k9s 会以特定时间间隔监控 Kubernetes 资源,默认为 2 秒,并容许查看本身集群中的内容。它能够一目了然地提供了运行中 Pod、日志和部署的可视化视图,以及对 Shell 的快速访问。如下是该工具的主要特性:github
Pulses-集群事务状态的顶级仪表板docker
XRay-挖掘群集资源并查看其依赖性shell
Pods -列出你的 Pods 状态和资源消耗vim
Logs-查看容器日志并与之交互bash
RBAC-查看您的集群上的受权的用户、方式等less
安装起来虽然比较简单,可是有点不怎么给力!运维
K9s 采用 Go 语言开发,可运行于 Linux,macOS 和 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
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
操做快捷键
主要演示一些经常使用的命令参数的效果!
启动后,会弹出 k9s 的基于文本的用户界面。在没有指定命名空间标志的状况下,它会向你显示默认命名空间中的 Pod。经过快捷键来导航 k9s,能够随时使用方向键和回车键来选择列出的项目。可能会注意到 k9s 设置为使用 Vim 命令键,包括使用 J 和 K 键上下移动等。
0:#显示在全部命名空间中的全部 Pod d:#描述所选的 Pod l:#显示所选的 Pod 的日志 y:#查看 YAML 文件 e:#编辑 YAML 文件 d:#查看键映射描述 :svc:#跳转到服务视图 :deploy:#跳转到部署视图 :namespace:#跳转到命名空间视图 :cj:#跳转到 cronjob 视图,查看集群中计划了哪些做业 :rb:#跳转到角色绑定视图,用于基于角色的访问控制(RBAC)管理
运行该命令,会告诉咱们该应用程序要在哪里找它的配置文件。
$ 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
经过指定 namespace 命名空间,咱们能够将注意力集中在给定的命名空间上。
配置文件中主要定义一些使用上面的默认方式
K9s 将其配置保存在主目录 $HOME/.k9s 中的 .k9s 目录中。主要配置文件名为config.yml 并存储各类 K9s 特定位。k9s 将更新此文件以存储当前视图和名称空间信息。
# config.yml k9s: # Represents ui poll intervals. Default 2secs refreshRate: 2 # Set to true to hide K9s header. Default false headless: false # Indicates whether modification commands like delete/kill/edit are disabled. Default is false readOnly: false # Toggles icons display as not all terminal support these chars. noIcons: false # Logs configuration logger: # Defines the number of lines to return. Default 100 tail: 200 # Defines the total number of log lines to allow in the view. Default 1000 buffer: 500 # Represents how far to go back in the log timeline in seconds. Default is 5min sinceSeconds: 300 # Go full screen while displaying logs. Default false fullScreenLogs: false # Toggles log line wrap. Default false textWrap: false # Toggles log line timestamp info. Default false showTime: false # Indicates the current kube context. Defaults to current context currentContext: minikube # Indicates the current kube cluster. Defaults to current context cluster currentCluster: minikube # Persists per cluster preferences for favorite namespaces and view. clusters: cooln: namespace: active: coolio favorites: - cassandra - default view: active: po featureGates: # Toggles nodeshell support. Allow K9s to shell into nodes if needed. Default false. nodeShell: false # Provide shell pod customization of feature gate is enabled shellPod: # 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: 100m memory: 100Mi # The IP Address to use when launching a port-forward. portForwardAddress: 1.2.3.4 minikube: namespace: active: all favorites: - all - kube-system - default view: active: dp
对于平常常常须要操做 k8s 的运维人员来讲倒是颇有帮助!
除了上述的功能之外,k9s 还有其余比较实用的功能,好比支持自建命令别名、自定义热键方式、支持自定义插件、还支持自定义终端界面显示以及资源显示顺序和组合。这些在官网中,给出了一些简单的示例说明和配置方式,基本能够作到,看了以后就能够自行 DIY 了。
了解你的工具并掌握作事情的“硬道理”很重要。还有一点很重要的是要记住,就管理而言,重要的是要更聪明地工做,而不是更努力。使用 k9s,就是我践行这个目标的方法。
做者: Escape
连接: https://www.escapelife.site/p...