You can learn more by this link.
What it is
Orchestration and scheduling refer to running and managing containers across a cluster. A cluster is a group of machines, physical or virtual, connected over a network (see cloud native networking).
Container orchestrators (and schedulers) are somewhat similar to the operating system (OS) on your laptop. The OS manages all your apps such as Microsoft 365, Slack and Zoom; executes them, and schedules when each app gets to use your laptop’s hardware resources like CPU, memory and storage.
While running everything on a single machine is great, most applications today are a lot bigger than one computer can possibly handle. Think Gmail or Netflix. These massive apps are distributed across multiple machines forming a distributed application. Most modern-day applications are built this way, requiring software that is able to manage all components running across these different machines. In short, you need a “cluster OS.” That’s where orchestration tools come in.
You probably noticed that containers come up time and again. Their ability to run apps in many different environments is key. Container orchestrators, in most cases, Kubernetes, provide the ability to manage these containers. Containers and Kubernetes are both central to cloud native architectures, which is why we hear so much about them.
调度 (Scheduling) 和编排 (Orchestration) 是云原生架构中两个紧密相关的核心概念,它们负责在集群中运行和管理容器,确保应用程序的可靠性、可扩展性和高效性。集群是由网络连接的多台物理或虚拟机器组成的计算资源池。
调度 (Scheduling):
调度是指将容器部署到集群中最合适的节点上的过程。调度器会根据容器的资源需求(CPU、内存、GPU 等)、节点的可用资源、亲和性/反亲和性规则(例如,将某些容器部署在同一节点或不同节点上)、数据局部性(将容器部署在数据所在的位置)等因素,为容器选择最佳的运行位置。高效的调度可以最大限度地利用集群资源,提高应用程序的性能和稳定性。
编排 (Orchestration):
编排涵盖了容器的整个生命周期管理,包括部署、扩展、更新、回滚、监控、网络配置、存储管理等。编排工具(例如 Kubernetes)就像一个“集群操作系统”,它负责自动化这些任务,简化了应用程序的部署和管理,并提供了高可用性、容错性和自愈能力。
在云原生中的地位:
在云原生架构中,容器是应用程序部署的基本单元,而编排工具是管理容器的核心组件。它们共同构成了云原生应用的基础设施,使得应用程序可以轻松地在不同的环境中部署和运行,并具备弹性伸缩、自动恢复和持续交付等能力。
Kubernetes 作为目前最流行的容器编排工具,已经成为云原生生态系统的核心。它提供了丰富的功能和 API,可以满足各种复杂的应用场景需求。
更深入的理解:
可以将调度比作“分配座位”,将编排比作“组织活动”。调度器负责将容器“安排”到合适的节点上,而编排工具则负责管理整个容器化应用程序的运行,包括部署、扩展、监控等。