Jessica Cherry 发布的文章

这种有趣的开源语言是学习编码真正的完美选择。

在这篇文章中,我将介绍一个最好的编码语言,学习如何制作任何东西!它叫做 Emojicode,是由 Theo Belaire 在 2014 年创建的,它是一种开源的编程语言,使用 emoji 字符来表示其语法。当用 Emojicode 开发时,表情符被用来创建变量、函数和控制结构。因为它是一种静态类型的语言,变量类型必须在使用前声明,但它也支持类和继承等面向对象的概念。这种语言可以在每个操作系统上运行,它是一种超级有趣的编码方式,特别是当你是一个非英语母语的人时。这很有帮助,因为象形表示可以把我们大家聚集在一起,让我们以类似数学的方式说同样的语言。

先决条件

在本教程中,我使用的是基于 Debian 的操作系统。我的工具可能与你的操作系统的要求不同。以下是我所使用的工具:

  • Geany,一个 Linux 下的开源 IDE。
  • IBus,它允许你挑选表情符并把它们放在你的编辑器中。我使用的界面被称为 emoji picker
  • 基于 Debian 的 Linux。
  • 一个 C++ 编译器。我使用的是 g++ 编译器。
  • Emojicode

我使用的是 Linux 操作系统,但你可以 阅读文档 了解在其他操作系统上使用它时可能需要采取的任何特殊步骤。

在 Linux 上安装 Emojicode

有几种方法可以在你的电脑上安装 Emojicode,但它们有一个很酷的 神奇的安装页面,可以告诉你具体该怎么做。下面是我的做法:

$ wget https://github.com/emojicode/emojicode/releases/download/v1.0-beta.2/Emojicode-1.0-beta.2-Linux-x86_64.tar.gz -O emojicode.tar.gz \
    && tar -xzf emojicode.tar.gz && rm emojicode.tar.gz \
    && cd Emojicode-1.0-beta.2-Linux-x86_64 && ./install.sh \
    && cd .. && rm -r Emojicode-1.0-beta.2-Linux-x86_64

Emojicode 的安装过程提供了有用的反馈。

The emojicode installation procedure provides useful feedback along the way.

现在,你已经安装好了,是时候开始编写代码了!

它是怎么运作的?

首先,所有 Emojicode 文件的扩展名都以文件名 .? 结尾,但因为你不能在一般的文件名中这样做,所以它被翻译成 filename.emojic。这里是最重要的语法元素:

  • ? 放在一行的开头,表示要执行哪些代码块
  • ? 开始一个代码块
  • ? 来结束一个代码块
  • 想打印什么吗?就用 ? ? <string> ? ❗

还有很多其他的,所以这里有一些实际的例子。

打印一首俳句

首先,试着打印一首漂亮的俳句来玩玩吧! 在这个例子中,我将添加一行注释。看看你是否能识别它。

??
? This is a single line comment for fun
? ?Emojicode is great,? ❗
? ?Fun and expressive code,? ❗
? ?no sadness, just joy.? ❗
?

现在我们需要保存我们的代码,并通过我们的编译器运行它,使之成为一个漂亮的可执行文件:

$ emojicodec haiku.emojic 
$ ls
haiku  haiku.emojic  haiku.o

正如你所看到的,代码已经被编译并生成了两个文件,其中一个是可执行的。运行 haiku 文件:

$ ./haiku 
Emojicode is great,
Fun and expressive code,
no sadness, just joy.

数学和变量操作

接下来,你要同时做几件事:一点点数学和变量的改变。首先,将一个变量赋值为 0:

0 ➡️ ??x

你刚刚使用蜡笔(?)表情符、新建(?)表情符和变量名称创建了一个新变量,同时还将该变量赋值为 0。

接下来,用磁铁(?)表情符打印一行包括该变量的内容:

? ?The value is ?x? ? ❗

接下来,使用加号()和箭头(⬅️)表情符改变变量:

x ⬅️➕ 1

然后打印另一行的值。如此这般,然后打印出最终的数值。如下:

? ?

?Updating a variable using math 
0 ➡️ ??x
? ?The value is ?x? ? ❗

x ⬅️➕ 1
? ?The value is ?x? ? ❗

x ⬅️➕ 15
? ?The value is ?x? ? ❗

x ⬅️➖ 9
? ?The value is ?x? ? ❗

x ⬅️➗ 2
? ?The final value is ?x? ? ❗
?

接下来,用 emojicodec 编译代码,然后用你的可执行代码来看看结果:

$ emojicodec math.emojic 
$ ./math 
The value is 0 
The value is 1 
The value is 16 
The value is 7 
The final value is 3

如你所见,作为变量打印出来的所有内容都已使用新数学进行了更新。你可以用许多数学表情符来进一步操作。下面是一些更多的运算符:

? is your modulo
◀ Less than
▶ Greater than
◀? less than or equal to
▶? greater than or equal to

Emojicode 的怪癖

当我在文档中来回查看时,我发现了一些有趣的怪癖。其中之一是,当从用户那里抓取输入时,由于一些已知的编译器问题,耳朵的肤色很重要。

获取用户输入的动作是这样的:

??▶️??❗️

获取和分配用户输入的操作是这样的:

??▶️??❗️ ➡️ inputText

我试图让它工作,我的编译器出现了一些问题,我发现了这个问题。你也可能会在这里和那里遇到一些小问题。如果你遇到了,请创建一个 议题,这样它就有可能被修复。

没有技巧,只有很棒的代码

虽然我可以介绍更多内容,但我可以向你保证,这段令人惊叹的代码背后的文档非常丰富。尽管我写这篇文章只是为了赶上愚人节的乐趣,但我不得不承认这是有史以来最好的语言之一,因为它教会了你很多非常真实的编程概念。我恳切地建议把它作为一种有趣的方式来教你的一些朋友、孩子,或者是对编码感兴趣的同学。希望你度过了一个充满乐趣的愚人节!


via: https://opensource.com/article/23/4/emojicode

作者:Jessica Cherry 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在这篇文章中学习混沌工程的基础知识。

 title=

混沌工程是由科学、规划以及实验组成的。它是一门在系统上进行实验的学科,用来建立系统在生产中承受混乱条件能力的信心。

首先,我会在文章导论部分解释混沌系统如何工作。

如何开始学习混沌系统呢?

以我的经验,开始学习混沌系统的最好方式是触发一个此前生产中出现的事故来进行实验。使用过去的数据,制定一个计划,以相同的方式破坏你的系统,然后建立修复策略,并确认结果满足你预期。如果计划失败,你就有了一种新的实验方式,并朝着快速处理问题的新方式前进。

最重要的是,你可以随时记录所有内容,这意味着,随着时间的推移,整个系统将被完整记录下来,任何人都可以值守而无需太多加码,每个人都可以在周末好好休息。

你要在混沌工程中做什么?

混沌系统实验运行背后有一些科学依据。我记录了其中一些步骤:

  1. 定义一个稳定状态: 使用监控工具来搜集当系统没有问题或事故时,看起来功能正常的数据。
  2. 提出假设或使用先前的事故: 现在你已经定义了一个稳定状态,请提出一个关于在事故或中断期间会发生(或发生过)的情况的假设。用这个假设来得出一系列将会发生的事故,以及如何解决问题的理论。然后你可以制定一个故意引发该问题的计划。
  3. 引发问题: 用这个计划来破坏系统,并开始在真实环境中测试。收集破坏时的指标状态,按计划修复,并追踪提出解决方案所需时长。确保你把所有的东西都记录下来,以备将来发生故障时使用。
  4. 试图推翻你的假设: 实验中最精彩的部分是尝试推翻你的思考或计划。你要创建一个不同的状态,看看你能走多远,并在系统中生成一个不同的稳定状态。

确保在你在另一个系统中生成的破坏因素前,建立一个处于稳定状态的控制系统。这将使你更容易在实验前、期间和之后发现各种稳定状态的差异。

混沌工程需要什么?

这有一些初学混沌工程很好的工具:

  • 良好的文档编制方法
  • 一个捕捉你系统是否处于稳定状态的监控系统

    • Grafana
    • Prometheus
  • 混沌工程工具:

    • Chaos mesh
    • Litmus
    • 之后的文章我会介绍更多
  • 一个假设
  • 一个计划

去搞破坏吧

现在你已经掌握了基础,是时候去安全的摧毁你的系统了。我计划每年制造四次混乱,然后努力实现每月一次的破坏。

混沌工程是一种很好的实践,也是推进你的内部文档保持最新的好方法。此外,随着时间的推移,新升级或应用程序部署将更加顺畅,你的日常生活管理将通过 Kubernetes 变得更加轻松。


via: https://opensource.com/article/21/5/kubernetes-chaos

作者:Jessica Cherry 选题:lujun9972 译者:Donkey 校对:turbokernel, wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在你学习 Linux 命令行或练习新的编程语言时,请随身携带这些方便的备忘单。

 title=

你不可能记住每一个你需要使用的命令或快捷方式。我们都是普通人,通常情况下,我把笔记放在不同的纸片上和笔记本里。这导致我的办公桌上有些过分紊乱。到处都是一些五年前的杂乱无章的潦草文字。这这些 2021 年的备忘单将把混乱降低一个档次。从 JavaScript 到 Linux,这个列表中都有适合你的东西。

如何编写你的第一段 JavaScript 代码

这篇 文章 是为那些今年想尝试学习一门新语言的初来乍到者准备的。Seth Kenlon 介绍了如何安装 JavaScript 和开始制作一个简单的 HTML 页面。虽然 Seth 解释说 JavaScript 并不只用于网站,但所有主要的网页浏览器都有一个运行你的代码的 JavaScript 引擎。在整个演练过程中,Seth 涵盖了语法、变量和函数,让你开始创建一个新的应用。最后,在分享 备忘录 之前,Seth 还介绍了用 JavaScript 进行跨平台的能力。

Linux 软件包管理

Chris Hermanse文章 中,在他分享他的 备忘录 之前,我们对使用 apt 做了简要预览。许多人日常在家里和办公室使用基于 Debian 的 Linux。在这篇入门文章中,我们可以了解一下 apt 的用途,首先是用 apt 在软件包系统中寻找软件,也可以用另一个命令查看这些软件包的元数据。接下来,Chris 介绍了查看一个软件包是否包括安装过程中需要的文件(软件包依赖)。最后,Chris 介绍了如何用 apt 命令删除软件包。这份详尽的备忘录可以给你带来比 Linux 的日常软件包管理更多的东西。如果 apt 不适合你,你也可以看看 dnf 备忘录

用 DOS conio 开始编程

你是否想在明年涉足 DOS?如果是的话,你已经准备好创建令人兴奋的新应用,Jim Hall 为你准备了一份 备忘录。在这篇 文章 中定义了 conio,在分享备忘录之前,Jim 介绍了如何制作你自己的彩色文本用户界面。Jim 解释说,你可以用你的应用做更多的事情,使其更具互动性和刺激性。现在你有了这个备忘录,你就可以用 DOS conio 创建你自己的应用了。

学习 SQLite3

与这种常见的数据库一起工作?下面是你如何通过这个 备忘录 成为一个资深用户。在这个 实践教程 中,Klaatu 从安装和与 SQLite3 互动开始,然后在分享备忘录之前创建了一个带表的数据库。Klaatu 还用一段很简单的文字解释了数据类型和日期时间戳功能。Klaatu 在本教程中增加了更多详细的功能,包括查看表格、改变表格等等。如果你想继续使用 SQLite3 数据库并使其变得强大,或者只是想学习如何使用它,这个备忘录就适合你。

更多的 Linux 备忘录

虽然我只是蜻蜓点水地提及了这些备忘单,但我想提到一些值得称赞的地方,其中包括 Seth Kenlon 的 Linux 备忘单:

  • Seth 对 grep 的高级用法对各种场合都很有用。
  • find 命令备忘录对于我不想花大量时间在目录中徘徊的时候特别有帮助。
  • wget 备忘录对于那些你需要从互联网上获取东西的时候是很方便的。

以回顾 2021 年开始 2022 年

2021 年是备忘录的辉煌之年,其中许多是关于 Linux 的,但也有一些备忘录甚至让你从一种全新的语言开始。我强烈建议你打印出这些备忘录,在 2022 年开始学习新东西。我们欢迎各种经验水平的作者,请通过 给我们发送文章或备忘录 告诉我们你是如何学习新技能的。


via: https://opensource.com/article/22/1/open-source-cheat-sheets

作者:Jessica Cherry 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

你现在需要读的 2021 安全总结文章。

 title=

2021 年我们最常见的讨论之一是你自己数据的安全和隐私。显然,你的数据是你的,密码是安全的关键。今年的安全类的作者们提供了有用的知识和开源工具来保持你的数据和硬件安全。

以下是我对今年安全之旅选出的前五篇文章。

《6 个开源工具和初学者保护 Linux 服务器的技巧》

Sahana Sreeram 提供了从更新到恶意软件扫描的 六个基本的服务器安全小知识。这篇文章为你在家里或工作中的 Linux 服务器提供了一个起点。要特别注意密码强度部分和为你的服务器创建降低风险的密码策略要求的工具,因为这是你所使用的任何操作系统上最关键的做法。这篇文章是一篇实用指南,指导你在 Linux 服务器的日常工作中进行安全工作。正如 Sahana 所指出的,安全领域无疑正在扩大,这篇文章给了每个人着手预防的机会。

《用开源软件保护你的文件的 5 种方法》

接下来的 这篇文章 对于像我这样写了大量的文档(从文章到个人研究笔记都有)的人来说是非常有用的。作者 Ksenia Fedoruk 首先列出了保存文档的开源云存储服务。接下来,她介绍了加密的重要性以及在我们的文档中使用加密的方法。她还清楚地介绍了文件的数字签名和水印以及使用哪些开源工具。最后,文章涵盖了对我们制作和使用的文档进行密码保护的情况。结尾处的提醒遵循了今年安全领域的一个共同主题:你的数据是你的。

《4 个清除你的数据的 Linux 工具》

这篇文章 中,Don Watkins 涵盖了硬件的用途和维护。它以一系列擦除硬盘的工具作为引子,这样你的数据就不能被下一个使用设备的人拿走。在几个小的演练中,Don 涵盖了使用 GNU shred、ShredOS、dd 命令,以及最后的 nvme-cli。每一个都可以从你的硬件中删除所有的数据,并对你正在使用的、不再需要的硬盘进行删除。Don 的结论提供了一个温和的提醒:如果你要卖掉你的硬件,这并不意味着下一个人应该拥有你的数据。你的数据是你的。

《在 Linux 命令行上生成密码》

正如我在本期中早先时候指出的那样,密码对于今年的安全总结至关重要。在 这篇文章 中,我们的作者 Sumantro Mukherjee 首先介绍了许多网站在涉及到密码时可以有(也应该有)一个严格的规定。这篇文章循序渐进地介绍了如何使用 pwgen,首先是安装它,然后是生成密码。这是一个有用的工具,Sumantro 详细介绍了如何使用一些标志来生成符合任何网站或应用的要求和策略的密码。在这篇读物的最后,最后的总结包含了链接到一个方便的开源密码管理器列表,这个列表是我们的另一位作者 Jason Baker 在今年早些时候写的。这是一个重要的读物,可以让你为你在网站上的日常使用制定更好的密码,以防止黑客攻击或丢失你的账户中的数据。

《用这个开源软件加密你的文件》

今年的安全总结的最后,是一篇关于加密和加密文件的 文章Seth Kenlon 介绍了一个名为 VeraCrypt 的开源跨平台加密工具。Seth 的演练深入解释了如何安装和使用 VeraCrypt,并展示了这个很酷的软件的易用性。但在此之前,他还简要介绍了 VeraCrypt 的前身 TrueCrypt 的历史,以及 VeraCrypt 是如何向后兼容以前用 TrueCrypt 的加密卷的。通过这个易于使用的开源加密软件,Seth 已经证明,你可以在本地拥有你的数据,并以你想要的方式进行加密。

荣誉提名

虽然这五篇是我今年的最爱,但这里还有两篇同样值得一读的提名文章。

每篇文章都对安全策略和采用情况进行了结构化解读。

关于安全的总结

我强烈建议在今年阅读这些文章和 其他几篇。这些将使你为 2022 年安全世界的发展做好准备。你可以成为新一年的安全冠军。

你有一些想要推荐的工具吗?请留下评论或 提出你的文章构思


via: https://opensource.com/article/21/12/open-source-security

作者:Jessica Cherry 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我是词典里 “失败” 一词旁边的插图,这就是为什么我擅长我的工作的原因。

我的职称是高级软件工程师,但我最亲近的同事并不这么称呼我。由于我摧毁一切,他们管我叫“樱桃炸弹”(正巧我姓“樱桃”)。我定期会遇到的失败已经可以影响到我们的季度性收益和停机时间。简单的来说,我就是你所听说过的生产灾难:“别动,啥都别做,无论何时何地。”

我的职业生涯始于支持服务台,在那里我写了一些循环,破坏了高端客户的服务器。我曾在没有警告的情况下将生产应用程序关闭了长达八个小时,并且在试图使得情况好转的过程中摧毁了无数个集群,有几次只是因为我打错了字。

我是我们在 Kubernetes 中设有灾难恢复(DR)集群的原因。我是个混乱的工程师,我们有一个应用程序,它的故障恢复计划还从未测试过,而我在没有警告的情况下,就教人们如何快速行动和排除故障。我作为可能失败的最好例子而存在,这实际上是有史以来最酷的事情。

我和消失的 K8s 集群

我的正式职责之一涉及到我们的应用架构。对于任何形式的架构改动,我都要进行代码的编写与测试,看看有什么可能性。近来,据说这成了我老板史诗级的痛苦,这只是轻描淡写。

我们在 Kubernetes 上运行我们的大多数基础架构,Kubernetes 以其弹性著称。尽管有这样的声誉,我还是使得两个集群,好吧,消失了。你可能会好奇我是怎么做到的,很容易,terraform destroy。我们通过 Terraform 以代码的方式管理我们的基础架构,并且不需要任何软件知识就知道 destroy 可做坏事。在你惊慌失措之前,好吧,是开发集群,所以我还活着。

鉴于此,你们肯定会问我为什么还没丢掉饭碗,以及为什么我要写下这些事情。这很好回答:我仍然有工作,是因为我更新的基础架构代码比起起初的代码工作得更好更快了。我写下这些是因为每个人都会经常性地遭遇失败,这是非常非常正常的。如果你没有时不时遭遇失败,我认为你并没有足够努力地学习。

破坏东西并培训人们

你可能还会认为永远不会有人让我去培训任何人。那是最糟糕的主意,因为(就像我的团队开玩笑说的)你永远都不应该做我所做的事情。但是我的老板却让我定期去训练新人。我甚至为整个团队提供使用我们的基础设施或代码的培训,教人们如何建立自己的基础设施。

原因是这样的:失败是你迈向成功的第一步。失败的教训绝不只是“备份是个绝佳的主意”。不,从失败中,你学会了更快地恢复、更快地排除故障并且在你工作中取得惊人的进步。当你在工作中变得惊人的时候,你就可以培训其他人,教给他们什么事情不要做,并且帮助他们去理解一切是如何工作的。由于你的经验,他们会比你开始时更进一步 —— 而且他们也很可能以新的、惊人的、史诗般的方式失败,每个人都可以从中学到东西。

你的成功取决于你的失败

没有人生来就具有软件工程和云基础架构方面的天赋,就像没有人天生就会走路。我们都是从滚动和翻爬开始的。从那时起,我们学会爬行,然后能够站立一会儿。当我们开始走路后,我们会跌倒并且擦伤膝盖,撞到手肘,还有,比如像我哥哥,走着走着撞上桌子的尖角,然后在眉毛中间缝了针。

凡事都需要时间去学习。一路上阅读手边能获得的一切来帮助你,但这永远只是个开始。完美是无法实现的幻想,你必须通过失败来取得成功。

每走一步,我的失败都教会我如何把事情做得更好。

最终,你的成功和你累积的失败一样多,这标志着你成功的程度。


via: https://opensource.com/article/20/3/failure-driven-development

作者:Jessica Cherry 选题:lujun9972 译者:JonnieWayy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

看看这个很酷的 Kubernetes 管理的终端 UI。

通常情况下,我写的关于 Kubernetes 管理的文章中用的都是做集群管理的 kubectl 命令。然而最近,有人给我介绍了 k9s 项目,可以让我快速查看并解决 Kubernetes 中的日常问题。这极大地改善了我的工作流程,我会在这篇教程中告诉你如何上手它。

它可以安装在 Mac、Windows 和 Linux 中,每种操作系统的说明可以在这里找到。请先完成安装,以便能够跟上本教程。

我会使用 Linux 和 Minikube,这是一种在个人电脑上运行 Kubernetes 的轻量级方式。按照此教程或使用该文档来安装它。

设置 k9s 配置文件

安装好 k9s 应用后,从帮助命令开始总是很好的起点。

$ k9s help

正如你在帮助信息所看到的,我们可以用 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:
  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 的基于文本的用户界面。在没有指定命名空间标志的情况下,它会向你显示默认命名空间中的 Pod。

 title=

如果你运行在一个有很多 Pod 的环境中,默认视图可能会让人不知所措。或者,我们可以将注意力集中在给定的命名空间上。退出该应用程序,运行 k9s -n <namespace>,其中 <namespace> 是已存在的命名空间。在下图中,我运行了 k9s -n minecraft,它显示了我损坏的 Pod:

 title=

所以,一旦你有了 k9s 后,有很多事情你可以更快地完成。

通过快捷键来导航 k9s,我们可以随时使用方向键和回车键来选择列出的项目。还有不少其他的通用快捷键可以导航到不同的视图。

  • 0:显示在所有命名空间中的所有 Pod  title=
  • d:描述所选的 Pod  title=
  • l:显示所选的 Pod 的日志  title=

你可能会注意到 k9s 设置为使用 Vim 命令键,包括使用 JK 键上下移动等。Emacs 用户们,败退吧 :)

快速查看不同的 Kubernetes 资源

需要去找一个不在 Pod 里的东西吗?是的,我也需要。当我们输入冒号(:)键时,可以使用很多快捷方式。从那里,你可以使用下面的命令来导航。

  • :svc:跳转到服务视图  title=
  • :deploy:跳转到部署视图  title=
  • :rb:跳转到角色绑定视图,用于 基于角色的访问控制(RBAC)管理  title=
  • :namespace:跳转到命名空间视图  title=
  • :cj:跳转到 cronjob 视图,查看集群中计划了哪些作业。  title=

这个应用最常用的工具是键盘;要在任何页面往上或下翻页,请使用方向键。如果你需要退出,记得使用 Vim 绑定键,键入 :q,然后按回车键离开。

用 k9s 排除 Kubernetes 的故障示例

当出现故障的时候,k9s 怎么帮忙?举个例子,我让几个 Pod 由于配置错误而死亡。下面你可以看到我那个可怜的 “hello” 部署死了。当我们将其高亮显示出来,可以按 d 运行 describe 命令,看看是什么原因导致了故障。

 title=

 title=

草草掠过那些事件并不能告诉我们故障原因。接下来,我按了 esc 键,然后通过高亮显示 Pod 并输入shift-l 来检查日志。

 title=

不幸的是,日志也没有提供任何有用的信息(可能是因为部署从未正确配置过),而且 Pod 也没有出现。

然后我使用 esc 退了出来,我看看删除 Pod 是否能解决这个问题。要做到这一点,我高亮显示该 Pod,然后使用 ctrl-d。幸好 k9s 在删除前会提示用户。

 title=

虽然我确实删除了这个 Pod,但部署资源仍然存在,所以新的 Pod 会重新出现。无论什么原因(我们还不知道),它还会继续重启并死掉。

在这里,我会重复查看日志,描述资源,甚至使用 e 快捷方式来编辑运行中的 Pod 以排除故障行为。在这个特殊情况下,失败的 Pod 是因为没有配置在这个环境下运行。因此,让我们删除部署来停止崩溃接着重启的循环。

我们可以通过键入 :deploy 并点击回车进入部署。从那里我们高亮显示并按 ctrl-d 来删除。

 title=

 title=

这个有问题的部署被干掉了! 只用了几个按键就把这个失败的部署给清理掉了。

k9s 是极其可定制的

这个应用有很多自定义选项、乃至于 UI 的配色方案。这里有几个可编辑的选项,你可能会感兴趣。

  • 调整你放置 config.yml 文件的位置(这样你就可以把它存储在版本控制中)。
  • alias.yml 文件中添加自定义别名
  • hotkey.yml 文件中创建自定义热键
  • 探索现有的插件或编写自己的插件。

整个应用是在 YAML 文件中配置的,所以定制化对于任何 Kubernetes 管理员来说都会觉得很熟悉。

用 k9s 简化你的生活

我倾向于以一种非常手动的方式来管理我团队的系统,更多的是为了锻炼脑力,而不是别的。当我第一次听说 k9s 的时候,我想,“这只是懒惰的 Kubernetes 而已。”于是我否定了它,然后回到了到处进行人工干预的状态。实际上,当我在处理积压工作时就开始每天使用它,而让我震惊的是它比单独使用 kubectl 快得多。现在,我已经皈依了。

了解你的工具并掌握做事情的“硬道理”很重要。还有一点很重要的是要记住,就管理而言,重要的是要更聪明地工作,而不是更努力。使用 k9s,就是我践行这个目标的方法。我想,我们可以把它叫做懒惰的 Kubernetes 管理,也没关系。


via: https://opensource.com/article/20/5/kubernetes-administration

作者:Jessica Cherry 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出