巧用 K9s 来加速 Kubernetes 多集群的管理

2024-03-20 09:30

本文主要是介绍巧用 K9s 来加速 Kubernetes 多集群的管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

公众号关注 「奇妙的 Linux 世界」

设为「星标」,每天带你玩转 Linux !

试试这个很棒的终端UI来管理Kubernetes集群吧。

通常,如果我的文章是关于管理Kubernetes的,那么一定会出现各种用于集群管理的kubectl命令。最近有人向我推荐了k9s这个项目,它可以用来快速查看和解决Kubernetes的常见问题。这个工具帮助我优化了工作流程,下面我将向你展示如何使用它。

你可以在Mac,Windows,Linux上安装k9s,安装教程可以参考这里[1]。

我将会使用Linux和Minikube,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 commandinfo        Print configuration infoversion     Print version/build infoFlags:-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 useUse "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

在这篇教程中,我会使用k9s仓库默认的config.yml。k9s的开发者注明这个文件的格式可能会更改,可以在这里[2]查看最新的版本。

k9s:refreshRate: 2headless: falsereadOnly: falsenoIcons: falselogger:tail: 200buffer: 500sinceSeconds: 300fullScreenLogs: falsetextWrap: falseshowTime: falsecurrentContext: minikubecurrentCluster: minikubeclusters:minikube:namespace:active: ""favorites:- all- kube-system- defaultview:active: dpthresholds:cpu:critical: 90warn: 70memory:critical: 90warn: 70

我将k9s设置为寻找本地minikube配置,所以我需要确认minikube处于联机状态并准备就绪。

$ minikube status
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

使用k9s来探索Kubernetes集群

设置好配置文件并指向本地集群后,就可以运行k9s命令。

k9s

启动k9s后,会弹出k9s基于文本的用户界面(UI)。如果没有标记命名空间,它将显示默认命名空间中的Pod。

如果你在具有多个Pod的环境中运行,则默认视图可能会不堪重负。另外,我们可以专注于给定的命名空间。退出应用程序并运行k9s -n <namespace>,其中<namespace>是已存在的命名空间。在下面的图片中,我运行了k9s -n minecraft,会显示出现问题的Pod。

k9s运行起来后,你可以快速的处理很多事情。

通过快捷键浏览k9。我们始终可以使用箭头键和Enter键来选择列出的项目。还有一些其他的通用按键可以导航到不同的视图:

  • 0 — 显示所有命名空间中的所有Pod

  • d — 描述选定的Pod

  • l — 显示所选Pod的日志

你可能会注意到k9s设置为使用Vim命令键,包括使用J和K键上下移动。幸运的emacs用户:)

快速查看不同的Kubernetes的资源

需要查看Pod之外的东西?你可以使用一些快捷键,只需要键入冒号(":")。以下是一些快捷键的用法:

  • :svc — 跳转到服务视图。

  • :deploy — 跳转到部署视图。

  • :rb — 跳至Rolebindings视图以进行基于角色的访问控制(RBAC)管理。

  • :namespace — 跳回到命名空间视图。

  • :cj — 跳转到cronjobs视图以查看集群中计划的作业。

示例:如何使用k9s对Kubernetes进行故障排查

我故意配置错误导致几个Pod停止。下图中,您可以看到Hello部署崩溃了。选中它以后,按d运行describe命令以查看导致故障的原因。

查看事件并不能找到失败原因,接下来,按下esc键,并选中Pod,输入<shift-l>来检查它的日志。

不幸的是,日志也没有提供任何帮助(可能是因为部署从未正确配置过),因此Pod不会启动。

之后我退出,然后试着删除Pod看是否能解决问题。为此,我选中Pod并使用<ctrl-d>。k9s在删除之前会提示用户。

虽然我确实删除了Pod,但部署资源仍然存在,因此将重新备份新的Pod。无论出于何种原因(假设我们并不知道),它会继续重启并崩溃。

我将再次查看日志,描述资源,并使用e快捷方式甚至编辑正在运行的Pod来解决问题。在现在这种情况下,发生故障的容器是因为未被配置正确而无法运行。因此,让我们删除部署以停止这个崩溃-重启的循环。

我们可以通过输入:deploy并单击Enter来进入部署视图。进入视图之后,选中并按<ctrl-d>进行删除。

部署失败了!仅需敲击几下键即可清理此失败的部署。

k9s是可高度定制的

k9s有大量自定义选项,甚至还可以定制UI的配色方案。以下是你可能感兴趣的一些可配置选项:

  • 调整放置config.yml文件的位置(你可以将它存储在版本控制的仓库中)

  • 将自定义别名添加到alias.yml文件

  • 在hotkey.yml文件中创建自定义热键

  • 搜索可用的插件或编写自己的插件

整个应用程序都使用YAML文件进行配置的,因此任何Kubernetes管理员都能比较熟悉如何自定义这些配置。

k9s让你生活变得简单

曾经我倾向于以一种非常手动的方式来管理我团队的系统,主要是用于大脑训练。当我第一次听说k9s时,我以为“这只是懒惰的Kubernetes”,所以我没有采用,继续进行手动干预。后来,我在处理积压工作时开始每天都使用它,让我震惊的是它比单独使用kubectl快得多。现在我已经完全转变了。

了解你的工具并且知道如何通过原始的方式做事情,这很重要。同时也要记住,就管理而言,更聪明而不是更努力地工作也很重要。使用k9s是我实现这一目标的方式。我猜我们可以称之为懒惰的管理Kubernetes。

相关链接:

  1. https://github.com/derailed/k9s

  2. https://github.com/derailed/k9s#k9s-configuration

原文链接:https://opensource.com/article/20/5/kubernetes-administration

本文转载自:「分布式实验室」,原文:https://tinyurl.com/yyflsvl3,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com。

你可能还喜欢

点击下方图片即可阅读

两款超好用的 Kubernetes 实时日志查看工具

点击上方图片,打开小程序,加入「玩转 Linux」圈子

更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!

这篇关于巧用 K9s 来加速 Kubernetes 多集群的管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/829021

相关文章

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔