管理20+Kubernetes集群、400台机器,秘诀在于?

管理20+Kubernetes集群、400台机器,秘诀在于?

作者:读芯术 2020-10-26 21:03:39

云计算 我在生产中管理大规模Kubernetes集群已经三年有余,日复一日的事实证明,我的方法是行之有效的。本文中将和大家分享关于kubectl终端设置的极简主义法。

本文转载自公众号“读芯术”(ID:AI_Discovery)

我在生产中管理大规模Kubernetes集群已经三年有余,日复一日的事实证明,我的方法是行之有效的。本文中将和大家分享关于kubectl终端设置的极简主义法。

一个精心定制的命令行终端可以显著提高生产率,这是所有奇迹发生的核心。但是我认为,与流行的命令行定制和功能丰富的升级相比,在安装任何一种新的二进制文件、包装器或修改程序时,简单的设置是非常省时省力的。特别是使用kubectl时,这种本机工具设计完善、几乎没有需要解决的问题。

下面是我对kubectl终端添加的四个简单功能。在这种设置下,我每天可以管理20多个大型Kubernetes集群,其中还包括400多台机器。

[[348572]]

使用‘kubetail’在多个Pod实例中查看日志文件

使用kubectl 时首先会注意到的一件事就是,难以跨多个实例查看日志文件。这是最常见的用例之一,但kubectl中并没有 。如果在kubectl 上查看单个pod的日志,它看起来就像这样:

  1. kubectl logs -f <POD_NAME> -n <NAMESPACE> 

在kubetail上,若要查看多个pods的日志,那么可以使用:

  1. 图源:unsplashkubetail<POD_NAME_REGEX> -n <NAMESPACE> 

这将查看名称与正则表达式相匹配的所有pods日志文件。由于日志记录跨多个pods,因此kubetail会使用不同的颜色来帮助区分和分析不同的日志文件。

图源:Komal Venkatesh Ganesan

kubetail是位于kubectl顶端的一个简单包装器,它可以实现上述功能。

动态更改默认命名空间

多次重复地为每个单独的kubectl操作提供命名空间指示,会耗费大量时间精力,而且效率低下。要解决这个问题就需要一种动态设置和更改默认命名空间的方法。

下面是我编写的一个名为ksn的简单别名函数,它实现了上述目的(ksn表示设置命名空间)。

图源:Komal Venkatesh Ganesan

图源:Komal Venkatesh Ganesan

通常,根据手头的任务,我们的工作涵盖大量命名空间。因此,如果我排查了一个kafka问题,那么10个命令中有8个会被发送到Kafka命名空间。在此期间,它将成为默认命名空间。这可以节省大量的时间,特别是在处理需要发布大量kubectl指令的复杂工作任务时。

在Shell命令提示符中显示“kube-context”和“namespace”

在发出kubectl命令时,必须时刻了解当前的 kube-context 和 namespace。同时在20个不同的kube-contexts和50个左右的命名空间中管理集群,这并不是一件容易的事。很容易在环境中发出错误的命令,尤其是在跨不同上下文和集群中执行多任务时。

为了解决这个问题,在终端提示附近随时显示活动的 namespace和kube-contexts是非常有用的。

在下述例子中,kube-context是dev2–1,命名空间是 test。有了这些信息,当在集群中执行命令时,就可以简单地查看它。

图源:Komal Venkatesh Ganesan

基本‘kubectl’别名

无需多言,别名是自定义和加速终端工作的最快方法。下面是我常用的一些kubectl别名,我已经非常习惯使用它们了。

  1. alias k='kubectl ' 
  2. alias kcc='kubectl config current-context' 
  3. alias kdp='kubectl delete po' 
  4. alias kgc='kubectl config get-contexts' 
  5. alias kge='kubectl get events --sort-by='\''{.lastTimestamp}'\' 
  6. alias kgp='kubectl get po' 
  7. alias kl='kubectl logs ' 
  8. alias kpf='kubectl port-forward' 
  9. alias ksc='kubectl config use-context' 

少即是多——不要过度使用终端

我们为kubectl用户介绍了四种基本的终端定制:

  • 使用kubetail查看多个pod实例的日志文件。
  • 动态更改默认 namespace以显著缩短kubectl指令。
  • 在命令提示符附近显示kube-context和namespace,避免意外错误。
  • 重要的kubectl别名列表。

与这种极简设置形成对比的是,流行的终端升级(比如K9s)往往是复杂、功能丰富、色彩多样的,但相反,它的速度缓慢、容易令人分心,而且并不是必需的。添加的(各种花里胡哨的)功能越多,花在理解和浏览屏幕上所有额外信息上的时间就越多。

[[348573]]

图源:unsplash

一个简洁的终端设置,比任何东西都更能增强你的注意力。拥有一个简单的命令行终端设置可以让你快速熟练地使用本地二进制文件和工具,这是至关重要的——尤其是需要使用大量基础架构、登录和退出不同的VM shell配置文件时。

对于一个工程师来讲,终端设置应有助于丰富经验,而不是让你无所适从。

 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/243403.html<

(0)
运维的头像运维
上一篇2025-04-25 06:14
下一篇 2025-04-25 06:15

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注