文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

K9s如何加速Kubernetes的集群管理?

2024-12-11 20:07

关注

【51CTO.com原创稿件】K9s是一个基于终端的UI,可以与Kubernetes集群进行交互。K9s的目的是简化导航,观察和管理已部署应用程序的过程。K9s持续监视Kubernetes的变化,并提供后续命令来与所观察到的资源进行交互。

特征

安装

K9s可用于Linux、macOS和Windows平台,可直接参考K9s官方文档,因为非常简单这里就不再过多赘述。

命令

K9s是一个用于查看和管理Kubernetes集群的CLI。接下来我们一起学习一下它的使用方法,感受下它的便捷和强大。

帮助命令

k9s help:列出所有可用的CLI选项

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

k9s info:获取关于K9s运行时的信息(日志、配置等)

  1. # k9s info 
  2.  ____  __.________        
  3. |    |/ _/   __   \______ 
  4. |      < \____    /  ___/ 
  5. |    |  \   /    /\___ \  
  6. |____|__ \ /____//____  > 
  7.         \/            \/  
  8.  
  9. Configuration:   /root/.k9s/config.yml 
  10. Logs:            /tmp/k9s-root.log 
  11. Screen Dumps:    /tmp/k9s-screens-root 

k9s version:查看K9s安装版本

  1. # k9s version 
  2.  ____  __.________        
  3. |    |/ _/   __   \______ 
  4. |      < \____    /  ___/ 
  5. |    |  \   /    /\___ \  
  6. |____|__ \ /____//____  > 
  7.         \/            \/  
  8.  
  9. Version:    0.19.7 
  10. Commit:     46c2f31249b3b67a16659614bde179c481a547de 
  11. Date:       2020-05-23T17:18:49Z 

启动命令

k9s:启动k9s

  1. # 启动k9s 
  2. k9s 
  3. # 在给定的namespace中运行K9s 
  4. k9s -n mycoolns 
  5. # 运行K9s并通过`pod命令`在pod视图中启动 
  6. k9s -c pod 
  7. # 在非默认的KubeConfig上下文中启动K9s 
  8. k9s --context coolCtx 
  9. # 以只读模式启动K9s -禁用所有修改命令(delete,create等) 
  10. k9s --readonly 

快捷键

K9s使用别名来定位到大多数K8s资源。这里贴出K9S官方的按键绑定。

 

基本所有的东西都在这张图里了,看到了不会用怎么办?别着急,下面我还是和大家一起挨个演示一遍它的用法。

Ctrl a:显示所有可用资源的别名。

上面介绍k9s的特征时提到过,K9s为我们提供很多快捷键和别名,通过这个快捷键我们可以快速查看K8s的资源别名(缩写),帮助我们轻松资源,提高工作效率。

 

第一列为k8s资源名称,第二列为K9s 控制台对应的资源简称(别名),第三列为该资源所在的组。

?:显示K9s提供的命令控制台的快捷键。

 

Esc:返回/退出。

我们回到初始pod界面,可以看到在default名称空间下我有两个pod资源:

 

/:进入过滤模式

输入/custom,对当前视图下的资源进行过滤,查找名称含有custom字符串的所有pod:

 

::进入命令行模式

允许你输入想要查看的任何资源/资源别名。例如::deploy,:svc......

输入:ns,查看当前集群的所有namespace:

 

结果视图:

 

和k8s一样,可以查看指定命名空间的资源,例如::cm namespace,:cj namespace。

输入:cm zhangsan,看一下zhangsan名称空间下的configmap资源如下:

 

d y l e:分别对应于describe yaml logs edit

即查看资源的描述信息、yaml文件和日志,对资源信息进行修改,大家玩儿k8s的都很熟悉,这里细节没必要再过多展开了。

Ctrl z:快速定位资源错误信息

Ctrl d:删除选中的K8s资源,删除前提示

Ctrl k:直接删除资源,没有提示

:q Ctrl c:退出K9s

简直不要太酷了!你只需要付出很少的学习成本(K9s只要看完我整理的这一篇,在工作中就足够用了),就能大大提高工作效率,一劳永逸。

配置文件

K9s将其配置文件保存在主目录的.k9s目录中$HOME/.k9s/config.yml。我们可以通过修改该文件的字段来存储K9s当前默认启动视图和命名空间信息,下面我列出配置文件中的内容和每一项代表的含义和作用,后面可根据自己的需求对值进行修改即可。

  1. # $HOME/.k9s/config.yml 
  2. k9s: 
  3.   # #表示ui轮询间隔。默认值2secs  
  4.   refreshRate: 2 
  5.   # 设置为true以隐藏K9s标头。默认值false  
  6.   headless: false 
  7.   # 指示是否禁用诸如delete/kill/edit之类的修改命令。默认值为false  
  8.   readOnly: false 
  9.   # 切换图标显示,因为并非所有终端都支持这些字符。 
  10.   noIcons: false 
  11.  
  12.   # 日志配置 
  13.   logger: 
  14.     # 定义要返回的行数。默认100  
  15.     tail: 200 
  16.     # 定义视图中允许的日志行总数。默认值1000  
  17.     buffer: 500 
  18.     # 表示以秒为单位返回日志时间轴的距离。默认值为5分钟(秒) 
  19.     sinceSeconds: 300 
  20.     # 在显示日志时进入全屏模式。默认值false  
  21.     fullScreenLogs: false 
  22.     # 切换日志换行。默认值false  
  23.     textWrap: false 
  24.     # 切换日志行时间戳信息。默认值false  
  25.     showTime: false 
  26.  
  27.   # 指示当前的kube上下文。默认为当前上下文 
  28.   currentContext: minikube 
  29.   # 表示当前的kube集群。默认为当前上下文集群 
  30.   currentCluster: minikube 
  31.   # 根据每个集群的命名空间和视图偏好持久存储。 
  32.   clusters: 
  33.     cluster1: 
  34.       namespace: 
  35.         active: coolio 
  36.         favorites: 
  37.         - cassandra 
  38.         - default 
  39.       view
  40.         active: po 
  41.       featureGates: 
  42.         # 切换nodeshell支持。如果需要,允许K9s封装到节点中。默认为false。 
  43.         nodeShell: false 
  44.       # 提供shell pod启用自定义gate功能 
  45.       shellPod: 
  46.         # 要使用的Shell Pod镜像。 
  47.         image: killerAdmin 
  48.         # 要启动到Shell Pod的namespace。 
  49.         namespace: fred 
  50.         # 在shell容器上设置的资源限制。 
  51.         limits: 
  52.           cpu: 100m 
  53.           memory: 100Mi 
  54.       # 启动端口转发时使用的IP地址。 
  55.       portForwardAddress: 1.2.3.4 
  56.     cluster2: 
  57.       namespace: 
  58.         active: all 
  59.         favorites: 
  60.         - all 
  61.         - kube-system 
  62.         - default 
  63.       view
  64.         active: dp 

自定义命令别名

看到这里了,是时候带大家真正秀一波K9s的”骚操作“了。掌握了K9s的基本用法,我们可以定制自己的K9s命令了!下面我们接着一起定制一个。

在配置文件config.yml同级目录$HOME/.k9s下,创建一个名为alias.yml的文件:

  1. # $HOME/.k9s/alias.yml 
  2. alias: 
  3.   # 使用pp作为Pod的别名 
  4.   pp: v1/pods 
  5.  
  6.   # 使用crb作为 ClusterRoleBinding的缩写 
  7.   crb: rbac.authorization.k8s.io/v1/clusterrolebindings 
  8.  
  9.   # 使用cr作为ClusterRole的简称 
  10.   cr: rbac.authorization.k8s.io/v1/clusterroles 
  11.  
  12.   # 使用dep作为Deployments的别名  
  13.   dep: apps/v1/deployments 
  14.  
  15.   # 使用fred作为自定义资源CRD Frederick的别名 
  16.   fred: acme.io/v1alpha1/fredericks 

别名/简称/缩写是相同的意思,这里只是为了便于大家理解。

自定义快捷键

进入命令模式并输入资源名称或别名对于浏览经常访问的资源可能很麻烦。通过利用hotkeys,可以将K9s配置为快速导航到我们的K8s资源。

同样的,这里我们也可以在$HOME/.k9s目录下创建一个名为/hotkey.yml的文件,来定制我们自己的快捷键:

  1. # $HOME/.k9s/hotkey.yml 
  2. hotKey: 
  3.  
  4.   # 点击Shift-0导航到pod视图 
  5.   shift-0: 
  6.     shortCut:    Shift-0 
  7.     description: Viewing pods 
  8.     command:     pods 
  9.  
  10.   # 点击Shift-0导航到deployments视图  
  11.   shift-1: 
  12.     shortCut:    Shift-1 
  13.     description: View deployments 
  14.     command:     dp 
  15.  
  16.   # 点击Shift-0导航到xray deployments视图   
  17.   shift-2: 
  18.     shortCut:    Shift-2 
  19.     description: XRay Deployments 
  20.     command:     xray deploy 

同样的,后面你可以基于此方法,自定义插件对K9s进行扩展,也是通过在$HOME/.k9s目录下,创建一个名为plugin.yml的文件,授人以鱼不如授人以渔,这里我希望你可以参照官方文档自己动手试一试,方法都交给你了,聪明人要学会要”渔“。

Tt's important to work smarter, not harder.

作者:臧远慧

 

简介:就职于中科星图股份有限公司(北京),研发部后端技术组。个人擅长 Python/Java 开发,了解前端基础;熟练掌握 MySQL,MongoDB,了解 Redis;熟悉 Linux 开发环境,掌握 Shell 编程,有良好的 Git 源码管理习惯;精通 Nginx ,Flask、Swagger 开发框架;有 Docker+Kubernetes 云服务开发经验。对人工智能、云原生技术有较大的兴趣。

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

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯