这些流行的K8S工具,你都用上了吗
本文介绍了一些流行的 Kubernetes 工具和常见的集群组件。例如 Helm 作为 Kubernetes 应用的包管理器,以及本地开发所需的 Kubernetes 发行版。另外提及了一些常见的集群组件,如集群自动缩放器、证书管理器、外部 DNS,以及一些简化与 Kubernetes 交互的工具,如命令行工具、端口转发工具和集成开发环境。
关注【云原生百宝箱】公众号,获取更多云原生消息
本文介绍了一些流行的 Kubernetes 工具和常见的集群组件。例如 Helm 作为 Kubernetes 应用的包管理器,以及本地开发所需的 Kubernetes 发行版。另外提及了一些常见的集群组件,如集群自动缩放器、证书管理器、外部 DNS,以及一些简化与 Kubernetes 交互的工具,如命令行工具、端口转发工具和集成开发环境。
流行的 Kubernetes 工具
Helm
Helm[1]是 Kubernetes 应用程序的包管理器,为分发提供模板和版本控制功能。了解 Helm 很重要,因为它是迄今为止 Kubernetes 最受欢迎的包管理器,并且其他部署工具通常为其提供强大的集成。
对于开发人员来说,你很可能会通过以下两种方式之一与 Helm 交互:
-
1. 你需要通过创建自己的 Helm Chart来打包应用程序以进行部署。
-
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/
推荐阅读
更多推荐
所有评论(0)