前言
在云计算时代,有效地在 Kubernetes 集群中调度 Pod 资源是至关重要的。在本文中,我们将深入探讨 Kubernetes 集群中 Pod 资源调度策略的概念,以及如何根据需求选择最佳的调度策略。
首先,我们需要了解 Kubernetes 集群中的 Pod 资源调度。在 Kubernetes 中,Pod 是最小的、可部署的单位,包含运行应用程序所需的所有资源。资源调度器是 Kubernetes 的核心组件之一,负责在节点上分配和调度 Pod。
Pod 资源调度策略是资源调度器在决定将 Pod 放置在哪个节点上时所使用的规则和准则。正确的调度策略对于实现应用程序的性能、可扩展性和容灾至关重要。
概述
在默认情况下,一个 pod 在哪个 node 节点上,是由 scheduler 组件采用响应的算法计算出来的,这个过程不受人工控制,但在实际使用中,这并不满足需求,有很多情况下,我们想控制某些 pod 到某些 node 节点上运行,这就需要使用 pod 的调度策略
调度策略
- 自动调度: 运行在哪个node节点上完全由scheduler经过一系列算法计算得出
- 定向调度: NodeName、NodeSelector
- NodeName: 根据 node 的名称运行在指定的 node 节点。
- NodeSelector: 根据 node 节点上的标签,关联标签选择器,最终决定运行在哪个 node 节点
- 亲和性调度: NodeAffinity、PodAffinity、PodAntiAfinity。
- pod可以亲和度选择在哪个 node 上运行,也可以通过反亲和度,不在哪个 node 上运行
- 污点 (容忍)调度: Taints、 Toleration
- node 节点可以定义污点策略,配置了污点,表示不允许 pod 在当前 node 上运行
- pod 可以定义 Toleration 容忍策略,即配了容忍的 pod 可以在配了污点的node上运行