十年架构设计总结!阿里华为等大厂都这么做容器调度和服务编排

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 十年架构设计总结!阿里华为等大厂都这么做容器调度和服务编排
  • 镜像仓库
    解决Docker镜像存储和访问
  • 资源调度
    决定Docker镜像可分发到哪些机器


这些解决后,就该考虑如何在集群中创建容器,即容器调度

容器创建后如何运作才能对外提供服务,即容器调度

1 容器调度

当服务需要发布的时候,该选择哪些机器部署容器。

若集群机器规模上百台,要发布的服务上百个,就不能靠人肉运维,需要有专门容器调度系统,所以很多基于Docker的容器调度系统,比如Swarm、Mesos。Kubernetes

它们能解决哪些问题呢?

主机过滤

解决容器创建时什么样的机器可以使用:

  • 存活过滤
    必须选择存活的节点,因为主机也有可能下线、故障态。
  • 硬件过滤
    比如Web集群往往用作计算节点,它的CPU一般配置比较高
    大数据集群往往用作数据存储,它的磁盘一般配置比较高


以上都是针对主机层次的过滤方式。

调度策略

为解决容器创建时选择哪些主机最合适,一般通过给主机打分。

比如Swarm包含两种类似策略:spread和binpack,都会根据每台主机的可用CPU、内存以及正在运行的容器的数量来给每台主机打分:

  • spread策略
    会选择一个资源使用最少的节点,以使容器尽可能的分布在不同的主机上运行。好处:可以使每台主机的负载都比较平均,而且如果有一台主机有故障,受影响的容器也最少
  • binpack策略
    正好相反,会选择一个资源使用最多的节点,好让容器尽可能的运行在少数机器上,节省资源的同时也避免了主机使用资源的碎片化

适用场景

各主机配置基本相同,使用也较简单,一台主机上只创建一个容器。每次创建容器时,直接从尚未创建过容器的主机中,随机选择一台

某些在线、离线业务混布场景,为达到主机资源使用率最高,需综合考量容器中的任务特点:

  • 在线业务主要使用CPU
  • 离线业务主要使用磁盘和I/O


这两种业务的容器大部分情况下适合混跑在一起

还有一种业务场景,主机资源都充足,每个容器只要划定所用资源限制,理论上跑在一起是没问题。但有时会出现对每个资源的抢占,比如都是CPU密集型或者I/O密集型的业务就不适合容器混布一台主机。

2 服务编排

服务依赖

若服务A调度的前提是先有服务B,容器调度时,就要考虑服务间这种依赖关系。

所以Docker提供Docker Compose。允许用户通过一个单独的docker-compose.yaml定义一组相互关联的容器组成一个项目,以项目形式管理应用。

比如要实现一个Web项目,要创建:

  • Web容器比如Tomcat容器
  • 数据库容器比如MySQL容器
  • 负载均衡容器比如Nginx容器等

就可以通过docker-compose.yaml配置这个Web项目里包含的三个容器的创建。

服务发现

容器调度完成后,就可以启动了。但此时容器还不能对外服务,服务消费者并不知道这个新的节点,必须具备服务发现机制,使得新容器节点能够加入到线上服务。

常用的服务发现机制:

基于Nginx的服务发现

针对提供HTTP服务的。

当有新容器节点时,修改Nginx的节点list配置,然后利用Nginx的reload,重新读取配置,加载新节点。

基于注册中心的服务发现

针对提供RPC服务的。


当有新的容器节点时,需要调用注册中心提供的服务注册接口。使用这种方式时,如果服务部署在多个IDC,就要求容器节点分IDC进行注册,以便实现同IDC内就近访问。以微博的业务为例,微博服务除了部署在内部的两个IDC,还在阿里云上也有部署,这样的话,内部机房上创建的容器节点就应该加入到内部IDC分组,而云上的节点应该加入到阿里云的IDC。

弹性扩容

大部分互联网业务的访问呈现出访问时间的规律性。在高峰期,增加容器的数量,确保服务稳定性;低峰期减少容器数量,减少服务使用的资源成本。可以根据容器的CPU负载,设置一个扩缩容的容器数量或比例。比如可以设定容器的CPU使用率不超过50%,一旦超过这个使用率就扩一倍节点。

目录
相关文章
|
22天前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。
|
21天前
|
运维 监控 Cloud Native
自动化运维的魔法书云原生之旅:从容器化到微服务架构的演变
【8月更文挑战第29天】本文将带你领略自动化运维的魅力,从脚本编写到工具应用,我们将一起探索如何通过技术提升效率和稳定性。你将学会如何让服务器自主完成更新、监控和故障修复,仿佛拥有了一本能够自动翻页的魔法书。
|
1天前
|
运维 Kubernetes Cloud Native
探索云原生技术:容器化与微服务架构的融合之道
【9月更文挑战第18天】在数字化转型的浪潮中,云原生技术以其灵活性、可扩展性成为企业创新的强大引擎。本文将深入探讨云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同推动现代应用的开发与部署。通过实际代码示例,我们将揭示这些技术如何简化运维,加速产品上市时间,并提高系统的可靠性和弹性。无论你是开发人员、架构师还是IT决策者,这篇文章都将为你提供宝贵的洞见和实践指导。
11 2
|
3天前
|
运维 Cloud Native 持续交付
云原生之旅:从容器化到微服务架构的探索
【9月更文挑战第16天】在数字化转型的浪潮中,云原生技术成为推动企业创新和效率提升的关键力量。本文将带你深入了解云原生的核心理念,从容器化技术的入门应用到微服务架构的设计实践,揭示如何利用这些先进技术构建更灵活、更可靠的系统。我们将通过具体案例,探讨云原生技术如何帮助企业实现快速迭代与持续交付,以及在这一过程中可能遇到的挑战和解决方案。
|
1天前
|
Kubernetes Cloud Native Java
云原生技术之旅:从容器化到微服务架构
【9月更文挑战第18天】云原生技术正改变着我们构建、部署和管理应用的方式。本文将通过一次虚拟的旅行,带领读者探索云原生的核心概念,如容器化、微服务、持续集成与交付等。我们将以一个实际案例为线索,逐步展开对Kubernetes集群管理、Docker容器创建和Spring Boot微服务开发的讨论。就像在旅途中不断发现新风景一样,您将了解到这些技术如何协同工作,提升开发效率和应用性能。准备好了吗?让我们启航!
|
12天前
|
运维 Cloud Native 云计算
云原生之旅:从容器化到微服务架构的演进之路
在数字化浪潮中,云原生技术如同星辰大海中的灯塔,为航船指引方向。本文将带你穿梭于云计算的世界,探索从容器化技术到微服务架构的变革旅程。我们将一窥云原生如何助力企业灵活应对快速变化的市场需求,以及在这一过程中,开发者和运维人员是如何成为时代变革的弄潮儿。让我们一同启航,驶向云原生的广阔天地。
|
7天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
18 3
|
9天前
|
运维 Kubernetes Cloud Native
云原生之旅:容器化与微服务架构的融合之道
在数字化转型的浪潮中,云原生技术以其高效、灵活的特性成为企业IT架构升级的重要选择。本文将探讨云原生的核心概念——容器化和微服务架构,并阐述它们如何相互融合,共同推动现代应用的开发与部署。通过深入浅出的解释,我们将揭示云原生如何助力企业快速适应市场变化,实现业务的持续创新和价值最大化。
|
10天前
|
运维 Cloud Native 云计算
云原生之旅:从容器化到微服务架构
【9月更文挑战第9天】在数字化转型的浪潮中,云原生技术成为推动企业IT革新的关键力量。本文将通过浅显易懂的语言和生动的比喻,带领读者探索云原生的核心概念、关键技术及实践路径,揭示如何在云计算时代构建灵活、高效、可靠的应用系统。你将了解到,正如甘地所言“你必须成为你希望在世界上看到的改变”,在云原生的世界里,每一位开发者和技术决策者都扮演着塑造未来的角色。
|
15天前
|
Kubernetes Cloud Native Docker
云原生技术:容器化与微服务架构的融合之道
【9月更文挑战第4天】在数字化时代的浪潮下,企业追求敏捷、高效、可扩展的IT架构成为共识。云原生技术作为现代软件部署的黄金标准,其核心理念在于推动应用的快速迭代与无缝迁移。本文将深入探讨云原生技术的精髓——容器化与微服务架构如何相互促进,共同构建起适应云计算环境的应用生态系统。我们将通过实际案例,揭示如何在云平台上利用这些技术实现服务的解耦、弹性伸缩及自动化管理,进而提升企业的竞争力。