使用k9s简化Kubernetes集群的管理!
即将开播:5月14日,Jenkins在K8S下的三种部署流程和实战演示
可以在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。
图1
如果你在有许多pod的环境中运行,默认视图可能让人不知所措。另外,我们可以专注于特定的命名空间。退出该应用程序,运行k9s -n ,其中是现有的命名空间。在下图中,我运行k9s -n minecraft,它显示我那个出故障的pod。
图2
所以一旦k9s启动起来,你可以迅速处理诸多事务。
可通过快捷键来浏览操控k9s。我们总是可以使用箭头键和回车键选择所列的项。有几个另外的通用键来查看不同的视图:
0—显示所有命名空间中的所有pod。
图3
d—描述所选择的pod。
图4
l—显示所选择的pod的日志。
图5
你可能注意到k9s已设置为使用Vim命令键,包括使用J键和K键上下移动。
快速查看不同的Kubernetes资源
是否需要查看不是pod的资源?输入冒号(“:”)键后有许多快捷方式可用。然后,你可以使用以下命令来浏览。
:svc——跳转到服务视图。
图6
:deploy——跳转到部署视图。
图7
:rb——跳转到角色绑定视图,面向基于角色的访问控制(RBAC)管理。
图8
:namespace——跳回到命名空间视图。
图9
:cj——跳转到计划任务视图,查看集群中的计划任务。
图10
对该应用程序而言最常用的工具是键盘;想在任何页面上向上或向下,使用箭头键。如果需要退出,记得使用Vim键绑定。输入:q,按回车键离开。
使用k9s对Kubernetes排除故障的示例
出现问题时,k9s有何帮助?为了举例说明,我让几个pod因配置错误而失效。下面你可以看到崩溃的Hello部署。一旦高亮显示,按d运行describe命令,查看导致故障的原因。
图11
图12
略读事件并不能告诉我们故障的原因。接下来,我按esc键,通过高亮显示pod并输入来查看日志。
图13
遗憾的是,日志也没有提供任何帮助(可能是由于从未正确配置部署),pod不会启动。
然后我按esc退出,查看删除pod会不会解决此问题。为此,我高亮显示pod并使用。k9s在删除之前提示用户。
图14
虽然我确实删除了pod,但部署资源仍存在,因此新的pod会出现。无论出于何种原因(我们尚不知道),它也会继续重启、崩溃。
我将重复查看日志、描述资源,并使用e快捷方式来编辑运行中的pod来解决问题。在这种特定情况下,出故障的pod未配置成在该环境下运行。因此,不妨删除部署以停止我们遇到的崩溃后重新启动循环。
我们可以通过输入:deploy并点击回车键来进入部署。之后,我们高亮显示,并按删除。
图15
图16
这证明部署不见了!仅需敲几下键即可清理这个出故障的部署。
k9s可灵活定制
因此,该应用程序有大量定制选项,连UI的配色方案都可以定制。以下是你可能感兴趣的几个可编辑选项:
- 调整放置config.yml文件的位置
- 将自定义别名添加到alias.yml文件
- 在hotkey.yml文件中创建自定义热键
- 探究可用的插件或自行编写插件