云原生最佳实践 | 梅赛德斯-奔驰如何提高其K8s平台的稳定性和可扩展性?

实现自动化集群创建、一切皆自助服务和更快的滚动升级

云原生最佳实践 | 梅赛德斯-奔驰如何提高其K8s平台的稳定性和可扩展性?

导读:当前,云原生已成为企业实现应用现代化、抢占数字化转型先机的最佳路径。因此我们开设「云原生案例集锦」栏目,深入剖析企业如何利用云原生技术来赋能业务增长。

本篇文章介绍了全球最成功的汽车公司之一梅赛德斯-奔驰如何将其Kubernetes集群管理扩展到公共云中,实现自动化集群创建和更快的滚动升级。

业务挑战

梅赛德斯-奔驰是全球最成功的汽车公司之一。作为梅赛德斯-奔驰的全资子公司,梅赛德斯-奔驰技术创新有限公司与梅赛德斯-奔驰合作,开发数字产品和软件解决方案。Kubernetes是我们技术栈中至关重要的组成部分,并且我们从v0.9版本开始就一直依赖它。然而,在我们采用Kubernetes时,并没有现成的Kubernetes集群管理解决方案可用,因此我们不得不自己创建解决方案。
我们组织的Kubernetes集群,在基于本地IaaS的托管OpenStack上快速增长。我们曾使用自编写的Terraform流水线来创建基础架构和Kubernetes集群,但这变得过于复杂,几乎无法管理。因此,我们需要一种更简化的解决方案。此外,我们希望为AWS等公共云环境做好准备,因为我们计划提供多云设置。

解决方案

在调研了各种选择后,我们决定迁移到Cluster API,这是一个Kubernetes项目,为配置和管理Kubernetes集群提供了声明式API。Cluster API使我们能够使用Kubernetes本身来管理我们的集群。它为我们的30名开发人员和平台工程师团队提供了更一致的体验,因为它减少了完成工作所需的框架和工具的数量。此外,Cluster API旨在跨不同的云提供商和基础架构上运行,这意味着无论集群在哪里运行,我们都可以使用相同的工具和工作流来管理它们。

采用Cluster API对我们的Kubernetes平台产生了深远的影响。其中最显著的好处之一是使用了协调循环(reconciliation loops),它取代了我们以前使用Terraform和传统流水线的旧有集群生命周期。这使我们能够始终了解我们基础架构的状态,并消除了可能出现的个性化手动更改或问题。通过协调循环,我们发现将新的变更部署到我们的Kubernetes集群所需的时间大大减少,从而加快了我们向用户交付的速度。

此外,我们成功地测试了滚动升级,只需触发一次即可,从而减少了流水线的重新启动需求。对我们来说,这是一个重大的胜利,因为我们可以确保服务的高可用性,避免停机时间并最小化对用户的干扰。

云原生最佳实践 | 梅赛德斯-奔驰如何提高其K8s平台的稳定性和可扩展性?

“得益于Cluster API,Kubernetes的滚动升级现在更加顺畅。这对于依赖PodDisruptionBudgets(PDB)确保应用程序可用性的用户尤为有利。在故障转移期间,如果某个Pod无法准备就绪,我们的传统流程需要在问题解决后重新运行升级作业。然而,借助Cluster API及其持续的协调循环,一旦Pod准备就绪,升级过程可以立即恢复,从而将停机时间降至最低并减少升级失败的风险。”—Tobias Giese, 软件工程师, Mercedes-Benz Tech Innovation GmbH

对于我们来说,使用可插拔的Cluster API云提供商是另一个重大突破。我们能够更轻松、更快速地引入新的公共云,使我们能够快速高效地扩展我们的Kubernetes基础架构。

Cluster API的另一个重要优点是其开源性质。通过利用开源项目,我们能够专注于核心业务,同时依赖于更广泛社区的贡献和支持。项目的协作性质还使我们能够向行业中的其他人学习,获得新的见解,并构建更好的解决方案。我们能够为开源和CNCF社区做出贡献,从而回馈并帮助行业中的其他人。

最后,Cluster API使我们能够显著扩展我们的Kubernetes基础架构。我们最初使用Terraform管理200个集群,但管理变得难以应付。如今,我们拥有近1000个集群,都通过Cluster API和多个管理集群高效管理。现在,我们可以轻松管理基础架构,知道我们拥有一个可扩展和可靠的系统。

总而言之,Cluster API为我们带来了许多好处。我们能够消除不一致性,缩短部署时间,执行滚动升级,更快地引入新的云,标准化我们的基础架构,并利用开源的力量。

我们的理念:一切皆自助服务

在梅赛德斯-奔驰及其子公司,如梅赛德斯-奔驰科技创新公司,我们将缩短上市时间作为首要任务,并相信赋予团队自助解决方案的力量。为了实现这一目标,我们采用了FOSS(自由开源软件)优先策略。通过采用自助服务和FOSS优先的方法,我们成功地减少了例行基础设施任务所需的时间,并将重点放在为用户提供价值上。最终,这将使我们平台的用户能够专注于他们的核心业务,而不会花费时间应对基础设施相关的挑战。

一切皆自助服务意味着我们努力通过API和用户界面使所有资源可用,为用户提供灵活性,让他们按照自己的需求管理自己的资源。例如,我们通过OpenStack云控制器管理器(OCCM)处理本地负载均衡器,使用户能够通过类型为LoadBalancer的Kubernetes服务轻松提供和管理负载均衡器。

类似地,我们对防火墙的处理方式是在集群内维持一个拒绝所有策略,同时允许用户根据需要通过NetworkPolicies开放端口。此外,我们还通过为类型为LoadBalancer的Kubernetes服务使用loadBalancerSourceRanges,增加了限制入口流量仅来自特定IP CIDR的能力。

为进一步增强自助服务,我们开发了一个API,为用户提供管理自己集群的接口。这个API由一个用户友好的用户界面支持,方便用户轻松管理集群。

云原生最佳实践 | 梅赛德斯-奔驰如何提高其K8s平台的稳定性和可扩展性?

请注意:所有的数值都是示例值,不反映实际的集群信息。

最后,为了确保我们的集群安全并符合最佳实践,我们使用像我们定制的CaaS Inspector这样的工具,它基于Popeye来检查我们的集群,并确定需要改进的方面。根据我们的经验和行业最佳实践,CaaS Inspector会为集群计算一个得分,提供对集群配置的整体状况的洞察。

接下来,我们对于使用Cluster API的下一步非常兴奋,特别是在利用Cluster API Runtime SDK来进一步增强我们的集群管理系统的能力。

此外,我们正在探索使用FluxCD进行GitOps,以便将指标导出器或自定义控制器等附加组件部署到工作负载集群中。虽然目前我们仍依赖Ansible来实现这一目的,但GitOps将允许我们对这些附加组件进行协调,以实现更高效的版本控制和管理。

此外,我们计划构建一个定制的集群控制器,负责处理集群的所有必要元信息以及在Cluster API可以提供集群之前必须创建的基础设施。这将为我们提供更大的灵活性和对集群管理系统的控制,并帮助我们进一步优化工作流程,提高我们的Kubernetes集群的稳定性和可扩展性。

企业收益

采用Cluster API对我们的Kubernetes平台带来了革命性的变化。我们能够消除特例情况,减少部署时间,进行滚动升级,更快地接入新的云平台,标准化我们的基础架构,并充分利用开源的力量。

本文翻译自CNCF

转载请注明出处:https://www.cloudnative-tech.com/case/5717.html

(1)
上一篇 2023年7月6日 上午11:36
下一篇 2023年7月11日 上午11:03

相关推荐

  • 裸金属容器化怎么部署?

    裸金属容器化部署是一种将容器化技术应用于裸金属服务器的部署方式,可以充分发挥裸金属服务器的性能优势和资源利用率。下面是裸金属容器化部署的一般步骤和流程:

    2023年6月28日
    0
  • 容器自动化部署DevOps流程

    容器自动化部署是DevOps流程中的关键环节之一,它通过将容器化应用的构建、测试和部署过程自动化,实现快速、可靠和一致的部署。下面是一个典型的容器自动化部署的DevOps流程,包括以下几个主要步骤:

    2023年6月21日
    0
  • 微服务架构深度解析与最佳实践

    本文将深入解析微服务架构的概念和实现,探讨微服务架构的最佳实践和应用场景。

    2023年5月5日
    0
  • 云原生开发流程指南

    随着云计算和容器技术的日益普及,云原生已成为当今软件开发的热门趋势。本文将介绍云原生开发所需的基本知识和流程,以及相关工具和技术的使用指南。

    2023年5月22日
    0
  • 容器云信创:加速信息技术应用创新的实践案例

    信息技术的快速发展正在深刻改变着各行各业的商业模式和运营方式。而在这个信息技术快速迭代的时代,容器云信创成为了企业加速应用创新的重要手段。本文将介绍一些实践案例,展示容器云信创在不同领域的应用,并探讨其带来的优势和价值。

    2023年6月2日
    0