这些流行的K8S工具,你都用上了吗


本文介绍了一些流行的 Kubernetes 工具和常见的集群组件。例如 Helm 作为 Kubernetes 应用的包管理器,以及本地开发所需的 Kubernetes 发行版。另外提及了一些常见的集群组件,如集群自动缩放器、证书管理器、外部 DNS,以及一些简化与 Kubernetes 交互的工具,如命令行工具、端口转发工具和集成开发环境。

945613c47c5765d7a93bf1566c83cf1d.jpeg
流行的 Kubernetes 工具

Helm

Helm[1]是 Kubernetes 应用程序的包管理器,为分发提供模板和版本控制功能。了解 Helm 很重要,因为它是迄今为止 Kubernetes 最受欢迎的包管理器,并且其他部署工具通常为其提供强大的集成。

对于开发人员来说,你很可能会通过以下两种方式之一与 Helm 交互:

  1. 1. 你需要通过创建自己的 Helm Chart来打包应用程序以进行部署。

  2. 2. 你将使用现有的 Helm Chart来部署其他服务或依赖项(例如数据库、缓存、消息队列)以进行集成或端到端测试。

有关如何在应用程序中使用 Helm 的具体信息可能因你的组织而异。有些团队可能有 CLI 工具来帮助引导 Helm Chart。其他人可能有一个“标准”模板供你使用和覆盖某些值。其他团队可能还有功能更齐全的仪表板或门户来指导你完成体验。

但归根结底,Helm 只是 Kubernetes 清单(例如,部署、状态集、服务等)的包装器。只要你能够区分 Kubernetes 原生概念与 Helm 或相关工具提供的模板引擎,你就能够快速了解正在发生的事情。

要深入了解 Helm,请查看Helm 101 for Developers[2]

其他流行的工具:kustomize[3]、cdk8s[4]

用于本地开发的 Kubernetes 发行版

除非你在为具备远程开发环境的大型组织工作,否则你可能会遇到一些用于本地开发的 Kubernetes 发行版。这个领域有很多选项,包括Docker Desktop[5]、minikube[6]、kind[7]、k3s[8]等等。即使你仍在本地使用 Docker 或 Docker Compose 进行开发和测试,你也可能会看到这些选项在 CI 中运行。

关于这些不同的 Kubernetes 发行版,需要了解的重要一点是,由于它们主要设计为在本地运行(即更受约束的非产品环境)或在 CI 中进行测试,因此 Kubernetes 功能的行为可能略有不同。例如,可以实施一些解决方法来支持Ingress或负载均衡器功能。

通用集群组件

接下来,我们有一个常见集群组件的列表,希望这些组件已安装在你的集群上。与你的基础设施团队合作安装这些(或类似组件),让你的生活更轻松!

  • • 集群自动缩放器:虽然 Kubernetes 具有 Pod 自动缩放功能,但你需要安装单独的集群自动缩放器来缩放底层节点。一些托管 Kubernetes 提供商(例如 GKE)将其打包到他们的产品中。对于其他人,你需要为节点甚至 Pod安装和配置Kubernetes Autoscaler [9]。如果你在 EKS 上运行,请查看Karpenter[10]

  • • Cert-manager 和 external-dns:对于需要外部访问的 Web 应用程序,更耗时且琐碎的任务之一是配置 DNS 以指向你的服务,以及配置 TLS 证书以加密你的端点。虽然这一切都可以通过 Terraform 或 SDK 在 Kubernetes 外部进行控制,但你也可以使用cert-manager[11]和external-dns[12]通过向 Kubernetes 服务添加注释来自动化此过程。

  • • 密钥管理:在 Kubernetes 上运行应用程序的另一个实际问题是获取应用程序要使用的密钥。虽然 Kubernetes 提供了对密钥管理的本机支持,但默认情况下它只是存储为 Base64 编码的明文。你可以将集群配置为静态加密它们,但它不提供密钥管理解决方案(如Vault[13]或云提供商的产品)的复杂控制和审核机制。无需从某些启动或 init 容器中的服务获取这些密钥,而是使用Secrets Store CSI Driver[14]等工具来自动执行此操作。

  • • 备份和迁移:最后,如果你正在运行具有持久卷的有状态应用程序,则需要定期备份数据以进行灾难恢复或更安全的迁移。velero[15]就是实现这一自动化的最佳选择。如需深入了解,你可以阅读有关Kubernetes 灾难恢复[16]的指南。

其他

最后,我们将以一系列必备工具来结束与 Kubernetes 的交互:

  • • 命令行工具:kube-ps1[17]用于 kubectl 提示,kubectx[18]用于在集群和命名空间之间切换。

  • • 端口转发:kube-forwarder[19]可轻松管理端口转发的端点。

  • • IDE:OpenLens[20]提供良好的控制台体验来管理 Kubernetes 集群并与之交互。

总结

Kubernetes 生态系统非常庞大,每天都会添加新的工具和项目。你可以通过谷歌搜索awesome-kubernetes[21]来了解正在完成的所有工作。

然而,对于大多数人来说,你与 Kubernetes 的交互将根据你的基础设施团队的设置进行一定程度的策划。对于某些人来说,它可能更接近带有一些辅助工具的最低限度的 Kubernetes 集群。对于其他人来说,它可能被抽象到组织的框架或工具后面。无论哪种情况,只要你了解 Kubernetes 基本概念,你就可以区分是在通用 Kubernetes wiki 还是从工具存储库中寻找答案。

引用链接

[1] Helm: https://helm.sh/
[2] Helm 101 for Developers: https://levelup.gitconnected.com/helm-101-for-developers-1c28e734937e
[3] kustomize: https://kustomize.io/
[4] cdk8s: https://cdk8s.io/
[5] Docker Desktop: https://docs.docker.com/desktop/kubernetes/
[6] minikube: https://minikube.sigs.k8s.io/docs/start/
[7] kind: https://kind.sigs.k8s.io/
[8] k3s: https://k3s.io/
[9] Kubernetes Autoscaler : https://github.com/kubernetes/autoscaler
[10] Karpenter: https://itnext.io/karpenter-open-source-high-performance-kubernetes-cluster-autoscaler-d56e3ab06aae
[11] cert-manager: https://cert-manager.io/
[12] external-dns: https://github.com/kubernetes-sigs/external-dns
[13] Vault: https://www.vaultproject.io/
[14] Secrets Store CSI Driver: https://secrets-store-csi-driver.sigs.k8s.io/introduction.html
[15] velero: https://velero.io/
[16] Kubernetes 灾难恢复: https://blog.devgenius.io/disaster-recovery-on-kubernetes-98c5c78382bb
[17] kube-ps1: https://github.com/jonmosco/kube-ps1
[18] kubectx: https://github.com/ahmetb/kubectx
[19] kube-forwarder: https://github.com/pixel-point/kube-forwarder
[20] OpenLens: https://github.com/lensapp/lens
[21] awesome-kubernetes: https://ramitsurana.github.io/awesome-kubernetes/projects/projects/

- END -


推荐阅读:

2024线下活动全面启动,1月6日深圳站不见不散~

「GoCN酷Go推荐」我用go写了魔兽世界登录器?

Go区不大,创造神话,科目三杀进来了

cc490ce41a6bdfa811168d676dcef4aa.png

快点击阅读原文报名吧~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值