【51CTO.com快译】我写的Kubernetes管理文章通常提到管理集群的kubectl命令。不过最近有人指出k9s项目可以快速地查看和解决Kubernetes中的日常问题。本文介绍了如何入门。
可以在Mac、Windows和Linux上进行安装。可以在此处针对每款操作系统的说明。完成安装后继续下一步。
我将使用Linux和Minikube,后者是在个人计算机上运行Kubernetes的轻量级方法。按照本教程用说明文档装它。
设置k9s配置文件
一旦安装了k9s应用程序,最好从help命令入手。
- $ k9s help
- K9s is a CLI to view and manage your Kubernetes clusters.
- Usage:
- k9s [flags]
- k9s [command]
- Available Commands:
- help Help about any command
- info Print configuration info
- version Print version/build info
- Flags:
- -A, --all-namespaces Launch K9s in all namespaces
- --as string Username to impersonate for the operation
- --as-group stringArray Group to impersonate for the operation
- --certificate-authority string Path to a cert file for the certificate authority
- --client-certificate string Path to a client certificate file for TLS
- --client-key string Path to a client key file for TLS
- --cluster string The name of the kubeconfig cluster to use
- -c, --command string Specify the default command to view when the application launches
- --context string The name of the kubeconfig context to use
- --demo Enable demo mode to show keyboard commands
- --headless Turn K9s header off
- -h, --help help for k9s
- --insecure-skip-tls-verify If true, the server's caCertFile will not be checked for validity
- --kubeconfig string Path to the kubeconfig file to use for CLI requests
- -l, --logLevel string Specify a log level (info, warn, debug, error, fatal, panic, trace) (default "info")
- -n, --namespace string If present, the namespace scope for this CLI request
- --readonly Disable all commands that modify the cluster
- -r, --refresh int Specify the default refresh rate as an integer (sec) (default 2)
- --request-timeout string The length of time to wait before giving up on a single server request
- --token string Bearer token for authentication to the API server
- --user string The name of the kubeconfig user to use
- Use "k9s [command] --help" for more information about a command.
如你所见,我们可以用k9s配置许多功能。要开始的唯一步骤是编写一个配置文件。info命令会把我们指向该应用程序查找的方向。
- $ k9s info
- ____ __.________
- | |/ _/ __ \______
- | < \____ / ___/
- | | \ / /\___ \
- |____|__ \ /____//____ >
- \/ \/
- Configuration: /Users/jess/.k9s/config.yml
- Logs: /var/folders/5l/c1y1gcw97szdywgf9rk1100m0000gn/T/k9s-jess.log
- Screen Dumps: /var/folders/5l/c1y1gcw97szdywgf9rk1100m0000gn/T/k9s-screens-jess
- 要添加文件,创建目录(如果之前没有),然后添加一个。
- $ mkdir -p ~/.k9s/
- $ touch ~/.k9s/config.yml
要添加文件,创建目录(如果之前没有),然后添加一个。
- $ mkdir -p ~/.k9s/
- $ touch ~/.k9s/config.yml
就本文而言,我们将使用来自k9s存储库的默认的config.yml推荐。维护者指出,该格式随时有变,因此我们可以在此(https://github.com/derailed/k9s#k9s-configuration)获取最新版本。
- k9s:
- refreshRate: 2
- headless: false
- readOnly: false
- noIcons: false
- logger:
- tail: 200
- buffer: 500
- sinceSeconds: 300
- fullScreenLogs: false
- textWrap: false
- showTime: false
- currentContext: minikube
- currentCluster: minikube
- clusters:
- minikube:
- namespace:
- active: ""
- favorites:
- - all
- - kube-system
- - default
- view:
- active: dp
- thresholds:
- cpu:
- critical: 90
- warn: 70
- memory:
- critical: 90
- warn: 70
我们设置k9s以寻找本地minikube配置,于是我要证实minikube已联机、随时可用。
- $ minikube status
- host: Running
- kubelet: Running
- apiserver: Running
- kubeconfig: Configured
运行k9s以探究Kubernetes集群
由于配置文件已设定、指向本地集群,我们现在可以运行k9s命令。
- $ k9s
一旦你启动了k9s,k9s文本型用户界面(UI)会弹出。没有命名空间的flag,它会显示默认命名空间中的pod。
如果你在有许多pod的环境中运行,默认视图可能让人不知所措。另外,我们可以专注于特定的命名空间。退出该应用程序,运行k9s -n ,其中是现有的命名空间。在下图中,我运行k9s -n minecraft,它显示我那个出故障的pod。
所以一旦k9s启动起来,你可以迅速处理诸多事务。
可通过快捷键来浏览操控k9s。我们总是可以使用箭头键和回车键选择所列的项。有几个另外的通用键来查看不同的视图:
0—显示所有命名空间中的所有pod。
d—描述所选择的pod。
l—显示所选择的pod的日志。
你可能注意到k9s已设置为使用Vim命令键,包括使用J键和K键上下移动。
快速查看不同的Kubernetes资源
是否需要查看不是pod的资源?输入冒号(“:”)键后有许多快捷方式可用。然后,你可以使用以下命令来浏览。
:svc——跳转到服务视图。
:deploy——跳转到部署视图。
:rb——跳转到角色绑定视图,面向基于角色的访问控制(RBAC)管理。
:namespace——跳回到命名空间视图。
:cj——跳转到计划任务视图,查看集群中的计划任务。
对该应用程序而言最常用的工具是键盘;想在任何页面上向上或向下,使用箭头键。如果需要退出,记得使用Vim键绑定。输入:q,按回车键离开。
使用k9s对Kubernetes排除故障的示例
出现问题时,k9s有何帮助?为了举例说明,我让几个pod因配置错误而失效。下面你可以看到崩溃的Hello部署。一旦高亮显示,按d运行describe命令,查看导致故障的原因。
略读事件并不能告诉我们故障的原因。接下来,我按esc键,通过高亮显示pod并输入来查看日志。
遗憾的是,日志也没有提供任何帮助(可能是由于从未正确配置部署),pod不会启动。
然后我按esc退出,查看删除pod会不会解决此问题。为此,我高亮显示pod并使用。k9s在删除之前提示用户。
虽然我确实删除了pod,但部署资源仍存在,因此新的pod会出现。无论出于何种原因(我们尚不知道),它也会继续重启、崩溃。
我将重复查看日志、描述资源,并使用e快捷方式来编辑运行中的pod来解决问题。在这种特定情况下,出故障的pod未配置成在该环境下运行。因此,不妨删除部署以停止我们遇到的崩溃后重新启动循环。
我们可以通过输入:deploy并点击回车键来进入部署。之后,我们高亮显示,并按删除。
这证明部署不见了!仅需敲几下键即可清理这个出故障的部署。
k9s可灵活定制
因此,该应用程序有大量定制选项,连UI的配色方案都可以定制。以下是你可能感兴趣的几个可编辑选项:
- 调整放置config.yml文件的位置
- 将自定义别名添加到alias.yml文件
- 在hotkey.yml文件中创建自定义热键
- 探究可用的插件或自行编写插件
整个应用程序在YAML文件中加以配置,因此定制对任何Kubernetes管理员来说会很熟悉。
原文标题:Speed up administration of Kubernetes clusters with k9s,作者:Jessica Cherry
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】