首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Kubernetes用于TechOps和支持的工具

Kubernetes用于TechOps和支持的工具

作者头像
CNCF
发布2021-04-21 15:38:13
发布2021-04-21 15:38:13
1.3K0
举报
文章被收录于专栏:CNCFCNCF

客座文章最初由 Tom Halligan 在Oteemo 博客[1]上发表

简介

组织在采用 Kubernetes 时面临的挑战之一,是为运营/支持人员,提供支持 K8s 部署所需的工具和培训。Kubernetes 的采用通常是由开发或工程团队驱动的,这些团队倾向于使用映射到他们需求的工具,但可能不会映射到破坏修复支持功能。

支持团队需要在继续支持现有环境的同时,迅速增加对 Kubernetes 的支持,因此,提供 K8s 1/2 层支持的团队在 Kubernetes 中接受适当的基础培训是很重要的。如果不了解 K8s 的基础知识,管理工具就没有什么用处。支持团队需要通过培训或实践项目[2]关注 K8s 架构和基本原则。

我将介绍两种工具,一种帮助 K8s 自我训练,另一种非常适合 K8s 的中断修复支持。

用K3d[3]作自我训练

为了帮助自我学习,有单节点 k8s 实现(minikube) 和云提供的解决方案,可以使用最小的费用(EKS、GKE 等),但在我看来,最好的,从轻量级、快速部署和功能仿真的角度出发,是 K3d,它一个基于 Rancher 维护的 K3s 发行版的 Dockerized Kubernetes 集群。

  • K3d 在 Mac 和 Linux 操作系统上运行,完整的安装说明列表请查看 Github 站点。
  • 可以在本地系统上模拟多节点集群。
  • K3d 自带traefik[4]安装,允许你使用 ingress,详情参见-publish 标志。
  • 部署非常快,15 秒左右。
  • 重启之间保持状态。

在我们开始之前,我们需要在你的工作站上安装 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

用K9s[5]作运营/支持

Kubernetes 集群有许多管理工具,但在我的预算看来,最能映射到日常操作任务的工具是 K9s。

  • 该工具是一个独立的 Go 二进制文件,可以在 Mac、Windows 和 Linux 上运行。
  • 安装简单且易于集成到构建工作流中,或快速安装到系统中,且资源占用最小。
  • 你可以在工具内的不同上下文(K8s 集群) 之间进行切换,并隔离/切换命名空间。
  • 你可以通过 UI 描述、编辑、缩放和删除资源(不是首选的更改方式,但有时出于支持目的是必需的)
  • GUI 是基于 curses,轻量级,允许操人员在资源类型之间快速移动(使用 CTRL-A 获得完整列表)

现在,让我们使用上面设置的 k3d 集群做一个快速示例。首先,我们将创建两个部署,一个好一个坏。

运行:

代码语言:javascript
复制
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 组织来说是很好的工具。

附录 A

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/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 简介
  • 用K3d[3]作自我训练
  • 用K9s[5]作运营/支持
  • 总结
  • 补遗
  • 附录 A
    • 参考资料
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档