Kubernetes实战:构建生产级应用平台
上QQ阅读APP看书,第一时间看更新

2.2 自动化

如果你要为你的Kubernetes集群设计一个部署模型,那么自动化是非常重要的。任何部署模型都需要将此作为指导原则。避免重复性的人工浪费对于降低成本和提高稳定性至关重要。人工的成本很高,仅让工程师完成常规的、烦琐的操作是非常浪费的。此外,人也是不可靠的,他们会犯错。在一系列的步骤中,只要有一个错误就可能会带来不稳定因素,甚至使系统崩溃。虽然使用软件系统进行自动化部署的前期工程投资很大,但是你将在今后的工作和故障排除中得到超出预期的回报。

如果你决定自己管理集群的生命周期,那么你必须制定好策略。你可以选择使用预制的Kubernetes安装程序或选择从头开始开发自己的自定义程序。这个决定与托管服务和自己搭建服务之间的决定有相似之处,那就是其中有一条路可以给你很大的权力、控制力和灵活性,但你要付出很大的工程量。

2.2.1 预制的安装程序

现在有无数开源和企业支持的Kubernetes安装程序可用。例如,目前CNCF网站(https://www.cncf.io/certification/kcsp)提供了180个Kubernetes认证服务提供者。有些服务需要花钱购买,会有经验丰富的现场工程师帮助你启动和运行,并且你在需要时可以呼叫支持人员来寻求帮助。

其他服务则需要自行理解并使用。一些安装程序(通常是付费的)可以一键启动Kuber-netes。如果符合它们所需的环境并满足其他要求,而且预算可以接受,则这种安装方法可能是一个很好的选择。在撰写本书的时候,使用预置的安装程序是我们最常见到的方法。

2.2.2 自定义自动化

即使使用预制的安装程序,通常也需要一些自定义配置。这通常是为了与团队的现有系统进行集成。然而,在本节中,我们讨论的是开发一个自定义的Kubernetes安装程序。

如果你正在开始你的Kubernetes生产之旅或改变你的Kubernetes战略方向,只有在以下情况下,自己构建自动化的路线才可能是你的选择:

•你有多个工程师可以投入到这项工作中去。

•你的员工中有具有深厚Kubernetes经验的工程师。

•你有专门的要求,没有能很好地满足这些要求的托管服务或预制安装程序。

如果有以下情况,本章的大部分内容是为你准备的:

•你符合构建自定义自动化的情况。

•你正在评估安装程序,并希望更深入地了解最佳实践是什么样子。

这会让我们了解构建自定义自动化来安装和管理Kubernetes集群的细节。此外,考虑这些问题的前提是你需要对你的应用平台有一个清楚的了解。并且该平台的功能应该由你的应用开发团队的需求来驱动,特别是那些最早使用该应用平台的人。千万不要落入“平台开发者诅咒”。将平台的早期预发布版本提供给开发团队进行测试,并设计一个富有成效的反馈流程来修复问题和增加功能,这样才会使你的应用平台稳步前进。

接下来,我们将介绍在实施方案开始之前应该考虑的架构问题,包括etcd的部署模式、将部署环境分成几层、解决管理大量集群的问题以及你可能使用什么类型的节点池来运行工作负载。之后,我们将了解Kubernetes的安装细节,首先是安装基础设施的依赖,然后是安装在集群的虚拟或物理机器上的软件,最后是构成Kubernetes集群控制平面的容器化组件。