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