介绍
随着 Kubernetes 的普及,其复杂性也在增加,强大的开源社区和云原生生态圈,围绕集群管理、开发、测试、安全等提供大量工具和服务。
在本文中,我们将重点介绍基于命令行的工具和插件,以帮助您进行集群管理、可观察性、常规日常运维。
这些工具和插件必须:
- 开源
- 基于命令行
- 易于安装
- 为 Kubernetes 工作流程带来切实的好处
[Kubectl krew 插件管理器]
Krew 是 kubectl 命令行工具的插件管理器,可以使用 git/curl 安装 Krew,具体Krew安装步骤,可以在Win、Linux、MacOS上安装使用。
Krew 与 kubectl CLI 集成并提供了机制,来安装额外命令行工具作为插件。目前,已有174 个插件可用。
为了充分利用 krew 插件管理器,您需要查看插件说明文档,知道哪些插件对您是有用的,然后通过 krew 安装。然后就是一个简单的运行问题kubectl plugin-name -options
这是我经常使用的插件列表,以供参考:
Krew 提供了一个用于发现和管理插件的一站式商店,使得添加新插件,来改进 Kubernetes 工作流程变得更加方便。
这实际上是两个独立的工具,但它们经常在一个工作流程中使用。
kubectx仓库
Kubens
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uc4e15Tt-1640684853310)(https://github.com/ahmetb/kubectx/raw/master/img/kubens-demo.gif)]
安装:
kubectl krew install ctx
kubectl krew install ns
这两个插件都是用 Go 编写的,并修改kubeconfig切换到新的上下文或命名空间。
这是它如何与我的上下文配合使用。
这些工具的最大好处是不必输入命令。所以必不可少!
这个插件与 kubectx 和 kubens 结合使用效果很好。一旦你切换到不同的上下文/命名空间,你怎么知道你在哪里?kube-ps1可以做到这一点,此插件在 Windows 上不可用
这个脚本允许你将Kubernetes上下文和kubectl上配置的命名空间添加到你的Bash/Zsh提示字符串中。Kube-ps1 可以通过kubeoff
命令关闭、使用kubeon
开启。
使用 kube-ps1,可以避免混淆导致的错误,因为我们始终知道我们所处的上下文和命名空间。
流式传输所有日志或基于查询条件流式传输日志比较困难,Kali解决了这个问题。
安装:
# mac
$ brew tap boz/repo
$ brew install boz/repo/kail
# linux
$ bash <( curl -sfL https://raw.githubusercontent.com/boz/kail/master/godownloader.sh) -b "$GOPATH/bin"
Kail 可以根据不同的匹配条件流式传输 Pod 的日志,例如,Service选择的所有 Pod 或匹配任意标签的所有 Pod。
最好打开两个Tab,下面是示例:
使用 kail,根据您的选择要求,流式传输日志和查看实时日志容易得多。
K9s 提供了一个终端UI来与Kubernetes集群交互。这个项目的目的是让您的应用程序更容易导航、观察和管理。K9s不断地监视Kubernetes的变化,并提供后续命令来与观察到的资源交互。
K9s 可以运行在所有主流操作系统之上。它还支持其他更高级的功能,如端口转发、查看 Kubernetes 对象的 YAML 等等。
以下是涉及到上面提到的所有工具和插件的工作流程。在这里,我在 Windows 10 上使用 WSL2(Windows Subsystem for Linux 2),使用键盘快捷键将我的终端窗口拆分为3个窗格。我使用 kail 在右下窗格中显示我创建的 nginx pod 的日志。一段时间后,我使用 k9s 将本地端口 8080 转发到 nginx 容器端口 80,并使用左下面板中的 curl 与其交互,同时 kail 显示日志。
结论
我们通过仅使用 5 个插件和工具明显改进原生 Kubernetes 工作流程。您可以在本地机器上轻松安装所有这些工具,也可以使用 Docker 将所有这些工具打包成镜像,随用随拉。
大家工作中使用到哪些好用的效率工具,欢迎在评论区中讨论~
作者简洁
作者:小碗汤,一位热爱、认真写作的小伙专注于写go语言、docker、kubernetes、java等开发、运维知识等提升硬实力的文章,期待你的关注。转载说明:务必注明来源