Kubernetes

随着 Kubernetes 的普及,其复杂性也在增加,强大的开源社区和云原生生态圈,围绕集群管理、开发、测试、安全等提供大量工具和服务。

重点介绍基于命令行的工具和插件,进行集群管理、可观察性、常规日常运维。

这些工具和插件必须:

  • 开源
  • 基于命令行
  • 易于安装
  • 为 Kubernetes 工作流程带来切实的好处

Kubectl krew 插件管理器

Krew 是 kubectl 命令行工具的插件管理器,可以使用 git/curl 安装在Win、Linux、MacOS上安装使用,具体Krew安装步骤

Krew 与 kubectl CLI 集成并提供了机制,来安装额外命令行工具作为插件。目前,已有174 个插件可用。

为了充分利用 krew 插件管理器,需要查看插件说明文档,知道哪些插件是有用的。

这是经常使用的插件列表,以供参考:

5 个必备的Kubernetes命令行工具 - 图1

Krew 提供了一个用于发现和管理插件的一站式商店,使得添加新插件,来改进 Kubernetes 工作流程变得更加方便。

Kubectx和Kubens

这实际上是两个独立的工具,但它们经常在一个工作流程中使用。

kubectx仓库

5 个必备的Kubernetes命令行工具 - 图2

Kubens

5 个必备的Kubernetes命令行工具 - 图3

安装:

  1. kubectl krew install ctx
  2. kubectl krew install ns

这两个插件都是用 Go 编写的,并修改kubeconfig切换到新的上下文或命名空间。

为了获得最佳体验,请在交互模式下使用这两个插件。此模式需要安装 fzf并启用使用光标而不是复制、粘贴来选择上下文。

以下是配合使用示例:

5 个必备的Kubernetes命令行工具 - 图4

这些工具的最大好处是不必输入命令。提高效率,必不可少!

Kube-ps1仓库

这个插件与 kubectx 和 kubens 结合使用效果很好。一旦切换到不同的上下文/命名空间,怎么知道在哪里?kube-ps1可以做到这一点,此插件在 Windows 上不可用。

5 个必备的Kubernetes命令行工具 - 图5

这个脚本允许将Kubernetes上下文和kubectl上配置的命名空间添加到Bash/Zsh提示字符串中。Kube-ps1 可以通过kubeoff命令关闭、使用kubeon开启。

使用 kube-ps1,可以避免混淆导致的错误,因为始终知道所处的上下文和命名空间。

使用kail流式传输日志

流式传输所有日志或基于查询条件流式传输日志比较困难,Kali解决了这个问题。

5 个必备的Kubernetes命令行工具 - 图6

安装:

  1. # mac
  2. $ brew tap boz/repo
  3. $ brew install boz/repo/kail
  4. # linux
  5. $ bash <( curl -sfL https://raw.githubusercontent.com/boz/kail/master/godownloader.sh) -b "$GOPATH/bin"

Kail 可以根据不同的匹配条件流式传输 Pod 的日志,例如,Service选择的所有 Pod 或匹配任意标签的 Pod 集合。

最好打开两个Tab,下面是示例:

5 个必备的Kubernetes命令行工具 - 图7

使用 kail,根据您的要求,流式传输日志和查看实时日志容易得多。

K9s

K9s 提供了一个终端UI来与Kubernetes集群交互。这个项目的目的是让您的应用程序更容易观察和管理。K9s不断地监视Kubernetes的变化,并提供后续命令来与观察到的资源交互。

K9s 可以运行在所有主流操作系统之上。它还支持其他更高级的功能,如端口转发、查看 Kubernetes 对象的 YAML 等等。

5 个必备的Kubernetes命令行工具 - 图8


以下是涉及到上面提到的所有工具和插件的工作流程。在 Windows 10 上使用 WSL2(Windows Subsystem for Linux 2),使用键盘快捷键将终端窗口拆分为3个窗格。使用 kail 在右下窗格中显示创建的 nginx pod 的日志。一段时间后,使用 k9s 将本地端口 8080 转发到 nginx 容器端口 80,并使用左下面板中的 curl 与其交互,同时 kail 显示日志。

5 个必备的Kubernetes命令行工具 - 图9

结论

通过仅使用 5 个插件和工具明显改进原生 Kubernetes 工作流程。可以在本地机器上轻松安装这些工具,也可以使用 Docker 将这些工具打包成镜像,随用随拉。

参考资料

Kubectl krew 插件管理器: https://krew.sigs.k8s.io/

Krew安装步骤: https://krew.sigs.k8s.io/docs/user-guide/quickstart/

174 个插件: https://krew.sigs.k8s.io/plugins/

插件说明文档: https://krew.sigs.k8s.io/plugins/

Kubectx和Kubens: https://github.com/ahmetb/kubectx

交互模式下: https://github.com/ahmetb/kubectx#interactive-mode

安装 fzf: https://github.com/junegunn/fzf

Kube-ps1仓库: https://github.com/jonmosco/kube-ps1

使用kail流式传输日志: https://github.com/boz/kail

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