|
|
51CTO旗下网站
|
|
移动端

使用k9s简化Kubernetes集群的管理!

我写的Kubernetes管理文章通常提到管理集群的kubectl命令。不过最近有人指出k9s项目可以快速地查看和解决Kubernetes中的日常问题。本文介绍了如何入门。

作者:布加迪编译来源:51CTO.com|2020-05-13 07:00

【51CTO.com快译】我写的Kubernetes管理文章通常提到管理集群的kubectl命令。不过最近有人指出k9s项目可以快速地查看和解决Kubernetes中的日常问题。本文介绍了如何入门。

可以在Mac、Windows和Linux上进行安装。可以在此处针对每款操作系统的说明。完成安装后继续下一步。

我将使用Linux和Minikube,后者是在个人计算机上运行Kubernetes的轻量级方法。按照本教程说明文档装它。

设置k9s配置文件

一旦安装了k9s应用程序,最好从help命令入手。

  1. $ k9s help 
  2. K9s is a CLI to view and manage your Kubernetes clusters. 
  3. Usage: 
  4.   k9s [flags] 
  5.   k9s [command] 
  6. Available Commands: 
  7.   help        Help about any command 
  8.   info        Print configuration info 
  9.   version     Print version/build info 
  10. Flags: 
  11.   -A, --all-namespaces                 Launch K9s in all namespaces 
  12.       --as string                      Username to impersonate for the operation 
  13.       --as-group stringArray           Group to impersonate for the operation 
  14.       --certificate-authority string   Path to a cert file for the certificate authority 
  15.       --client-certificate string      Path to a client certificate file for TLS 
  16.       --client-key string              Path to a client key file for TLS 
  17.       --cluster string                 The name of the kubeconfig cluster to use 
  18.   -c, --command string                 Specify the default command to view when the application launches 
  19.       --context string                 The name of the kubeconfig context to use 
  20.       --demo                           Enable demo mode to show keyboard commands 
  21.       --headless                       Turn K9s header off 
  22.   -h, --help                           help for k9s 
  23.       --insecure-skip-tls-verify       If true, the server's caCertFile will not be checked for validity 
  24.       --kubeconfig string              Path to the kubeconfig file to use for CLI requests 
  25.   -l, --logLevel string                Specify a log level (info, warn, debug, error, fatal, panic, trace) (default "info") 
  26.   -n, --namespace string               If present, the namespace scope for this CLI request 
  27.       --readonly                       Disable all commands that modify the cluster 
  28.   -r, --refresh int                    Specify the default refresh rate as an integer (sec) (default 2) 
  29.       --request-timeout string         The length of time to wait before giving up on a single server request 
  30.       --token string                   Bearer token for authentication to the API server 
  31.       --user string                    The name of the kubeconfig user to use 
  32. Use "k9s [command] --help" for more information about a command. 

如你所见,我们可以用k9s配置许多功能。要开始的唯一步骤是编写一个配置文件。info命令会把我们指向该应用程序查找的方向。

  1. $ k9s info 
  2.  ____  __.________ 
  3. |    |/ _/   __   \______ 
  4. |      < \____    /  ___/ 
  5. |    |  \   /    /\___ \ 
  6. |____|__ \ /____//____  > 
  7.         \/            \/ 
  8. Configuration:   /Users/jess/.k9s/config.yml 
  9. Logs:            /var/folders/5l/c1y1gcw97szdywgf9rk1100m0000gn/T/k9s-jess.log 
  10. Screen Dumps:    /var/folders/5l/c1y1gcw97szdywgf9rk1100m0000gn/T/k9s-screens-jess 
  11. 要添加文件,创建目录(如果之前没有),然后添加一个。 
  12. $ mkdir -p ~/.k9s/ 
  13. $ touch ~/.k9s/config.yml 

要添加文件,创建目录(如果之前没有),然后添加一个。

  1. $ mkdir -p ~/.k9s/  
  2. $ touch ~/.k9s/config.yml 

就本文而言,我们将使用来自k9s存储库的默认的config.yml推荐。维护者指出,该格式随时有变,因此我们可以在此(https://github.com/derailed/k9s#k9s-configuration)获取最新版本。

  1. k9s: 
  2.   refreshRate: 2 
  3.   headless: false 
  4.   readOnly: false 
  5.   noIcons: false 
  6.   logger: 
  7.     tail: 200 
  8.     buffer: 500 
  9.     sinceSeconds: 300 
  10.     fullScreenLogs: false 
  11.     textWrap: false 
  12.     showTime: false 
  13.   currentContext: minikube 
  14.   currentCluster: minikube 
  15.   clusters: 
  16.     minikube: 
  17.       namespace: 
  18.         active: "" 
  19.         favorites: 
  20.        - all 
  21.         - kube-system 
  22.         - default 
  23.       view
  24.         active: dp 
  25.   thresholds: 
  26.     cpu: 
  27.       critical: 90 
  28.       warn: 70 
  29.     memory: 
  30.       critical: 90 
  31.       warn: 70 

我们设置k9s以寻找本地minikube配置,于是我要证实minikube已联机、随时可用。

  1. $ minikube status 
  2. host: Running 
  3. kubelet: Running 
  4. apiserver: Running 
  5. kubeconfig: Configured 

运行k9s以探究Kubernetes集群

由于配置文件已设定、指向本地集群,我们现在可以运行k9s命令。

  1. $ 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文件中创建自定义热键
  • 探究可用的插件或自行编写插件

整个应用程序在YAML文件中加以配置,因此定制对任何Kubernetes管理员来说会很熟悉。

原文标题:Speed up administration of Kubernetes clusters with k9s,作者:Jessica Cherry

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

【编辑推荐】

  1. 5种方法让你知道Kubernetes集群的健康状况
  2. 基于Kubernetes的多云和混合云
  3. 如何轻松学习 Kubernetes?
  4. 为什么Kubernetes在边缘计算中如此关键?
  5. 为企业选择Kubernetes服务时要考虑的六大标准
【责任编辑:未丽燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

从头解锁Python运维

从头解锁Python运维

多维度详解
共19章 | 叱诧少帅

264人订阅学习

Active Directory 架构规划实战

Active Directory 架构规划实战

4类AD架构规划
共15章 | wx5918591c0084b

320人订阅学习

庖丁解牛Ceph分布式存储

庖丁解牛Ceph分布式存储

云计算存储的基石
共5章 | Happy云实验室

189人订阅学习

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微