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

发布时间:2024年01月05日

关注【云原生百宝箱】公众号,获取更多云原生消息

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

图片

流行的 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/


推荐阅读

文章来源:https://blog.csdn.net/fly910905/article/details/135415895
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。