客座文章最初由 Tom Halligan 在Oteemo 博客[1]上发表
组织在采用 Kubernetes 时面临的挑战之一,是为运营/支持人员,提供支持 K8s 部署所需的工具和培训。Kubernetes 的采用通常是由开发或工程团队驱动的,这些团队倾向于使用映射到他们需求的工具,但可能不会映射到破坏修复支持功能。
支持团队需要在继续支持现有环境的同时,迅速增加对 Kubernetes 的支持,因此,提供 K8s 1/2 层支持的团队在 Kubernetes 中接受适当的基础培训是很重要的。如果不了解 K8s 的基础知识,管理工具就没有什么用处。支持团队需要通过培训或实践项目[2]关注 K8s 架构和基本原则。
我将介绍两种工具,一种帮助 K8s 自我训练,另一种非常适合 K8s 的中断修复支持。
为了帮助自我学习,有单节点 k8s 实现(minikube) 和云提供的解决方案,可以使用最小的费用(EKS、GKE 等),但在我看来,最好的,从轻量级、快速部署和功能仿真的角度出发,是 K3d,它一个基于 Rancher 维护的 K3s 发行版的 Dockerized Kubernetes 集群。
在我们开始之前,我们需要在你的工作站上安装 kubectl 和 Docker,安装文档的链接见下面的附录 A。
在 MAC 上运行 brew install k3d 来安装工具,在 Linux 上运行 curl -s https://raw.githubusercontent.com/rancher/k3d/master/install.sh | bash
安装完成后,就可以启动 3 个节点的集群了
k3d cluster create somename -a 2
运行 kubectl get nodes,你将看到你的集群。
NAME STATUS ROLES AGE VERSION k3d-somename-worker-0 Ready 13s v1.16.2-k3s.1 k3d-somename-server Ready master 14s v1.16.2-k3s.1 k3d-somename-worker-1 Ready 13s v1.16.2-k3s.1
你现在可以练习 kubectl 命令、简单的部署、污染(tainting)和用于调度的标签等。
完成后,你可以运行以下程序进行清理(但是如果你继续下面的步骤进行,那么让我们把这个集群留给下一个工具来使用)
k3d cluster delete somename
Kubernetes 集群有许多管理工具,但在我的预算看来,最能映射到日常操作任务的工具是 K9s。
现在,让我们使用上面设置的 k3d 集群做一个快速示例。首先,我们将创建两个部署,一个好一个坏。
运行:
kubectl create deployment nginxgood –image=nginxkubectl create deployment nginxbad –image=nginy
然后让我们安装 k9s 并启动它。
在 Mac 上,你可以运行 brew install derailed/k9s/k9s,也可以下载 Linux、Windows 或 MAC 版的二进制文件https://github.com/derailed/k9s/releases,并将其放到你的路径中。
然后运行 k9s。
UI 将默认为 pod 视图,我们可以从两个部署中看到 pod,其中一组 pod 失败。你可以选择任何一个 pod 和描述 pod 按 d,看日志按 l,连到容器的 shell 按 s(你可以选择一个 pod 按 enter,得到所有容器的列表,在这里连到容器的 shell),甚至使用 CTRL-k 杀死一个 pod。

在我们的案例中,安 d 描述 pod 显示了错误的地方,镜像名称上的一个拼写错误。

要在资源视图之间切换,你可以点击:这将弹出命令解释器,然后输入资源的简短名称(CTRL-a 给出完整列表),在我们的示例中,我们将去 deploymens,所以按 dp

然后我们可以选择 owner deployment 并点击 e 来编辑部署清单(将把你带到 vi 中) ,然后我们可以纠正输入错误并:wq!


然后,我们可以切换回 pod 视图:po,并看到 deployment 启动新的 pod 和终止旧的 pod。

支持任何复杂系统的关键是理解,这也是培训/工具至关重要的地方。K8s 中的一些应用程序实现可以完全包含在 CI/CD 进程中,这样就不需要干预支持(当在代码中修复问题并重新部署时)。相当多的组织还没有达到这样的复杂程度,K8s 的部署需要 techops 资源的支持,以免开发团队被中断的支持工作搞得不知所措。
以上工具可以帮助支持团队快速学习 K8s 管理和故障排除的基础知识,并快速解决可能发生的 1/2 级问题。
k3d 和 k9s 对于开发来说都是很好的工具,特别是 k9s 有很多很棒的特性(定制的 kubectl 插件),它们不是特定于操作人员的,对于 DevOPs 组织来说是很好的工具。
kubectl 安装信息
https://kubernetes.io/docs/tasks/tools/
Windows 上的 Docker Desktop
https://docs.docker.com/docker-for-windows/install/
MAC 上的 Docker Desktop
https://docs.docker.com/docker-for-mac/install/
[1]
Oteemo 博客: https://oteemo.com/k8s-tooling-for-techops-support/
[2]
培训或实践项目: https://oteemo.com/enterprise-enablement/
[3]
K3d: https://k3d.io/
[4]
traefik: https://containo.us/traefik/
[5]
K9s: https://k9scli.io/