在 Kubernetes 中,新创建的和未计划的 pod 将自动调度到满足其要求的节点。 通过使用节点亲和性、污点和容忍度,您可以更好地控制 pod 调度到的节点。 在 ArcGIS Enterprise on Kubernetes 中,您可以通过 ArcGIS Enterprise Manager 管理新创建的 GIS 服务 pod 的部署位置。
通过节点亲和性,您可以指定约束 pod 在特定标注节点上运行的规则。 污点应用于节点以排斥 pod,而容忍度应用于 pod 以容忍污点。 有关详细信息,请参阅 Kubernetes 文档。
将节点亲和性、污点和容忍度相结合,可帮助您实现对工作负载部署位置的精细控制,从而增强隔离、优化资源分配并有效满足 Kubernetes 集群中的合规性要求:
- 隔离具有特定要求的工作负载 - 使用标注和节点亲和性规则来确保在专用节点上调度某些 pod。 使用污点将具有特定特征(如高 CPU 或内存要求)的节点标记为专用于 ArcGIS 工作负载。 然后在服务 pod 上应用容忍度,以确保将其调度到具有必要资源的节点上。
- 优化资源分配 - 在资源有限的节点上应用污点以防止资源过载,并在服务 pod 上定义容忍度以匹配这些节点上的资源约束。 将节点亲和性与污点及容忍度相结合,可确保仅在能够满足其资源需求的节点上调度服务 pod。
- 基于地理位置的安排 - 对于需要数据本地化或遵守特定法规的应用程序,可以使用节点亲和性根据节点的地理位置调度服务 pod。 根据节点的物理位置或数据主权法规对其进行污点标记,并在服务 pod 上应用容忍度以确保它们被调度到符合所需位置约束要求的节点上。
自动扩缩可根据工作负载需求动态调整 pod 数量,增强了节点亲和性和容忍度的使用。 这种动态扩缩可确保在满足特定要求或具有必要可用资源的节点上高效地调度 pod,从而优化资源分配。 通过将自动扩缩容与节点亲和性及容忍度相结合,Kubernetes 集群能够在适应工作负载波动的同时遵守节点约束和偏好,从而实现更高的资源利用率、性能和可扩展性。 有关自动扩缩的详细信息,请参阅服务扩缩。
场景
要更好地了解管理服务上的 pod 部署位置如何使您的组织受益,请查看以下场景。
情景 1:公共制图服务的季节性流量激增
某公共组织在当地节日期间经历了显著的流量增长。 因对底层地图服务的高需求,用户在访问用于获取活动信息的 Web 地图时遇到了延迟问题。 为解决此问题,组织管理员执行了以下操作:
- 使用键值对 high-performance: true 为节点配置高 CPU 和内存资源。
- 使用 workload=high-performance:NoSchedule 为高性能节点设置污点。
- 应用节点亲和性规则以确保在具有高 CPU 和内存资源的节点上调度地图 pod:
- 类型 - 首选
- 键 - high-performance
- 运算符 - Exists
- 值 - true
- 应用容忍度以允许 pod 在添加了高性能工作负载污点的节点上运行,从而确保地图服务可以处理激增的流量:
- 效果 - NoSchedule
- 键 - workload
- 运算符 - Equal
- 值 - high-performance
场景 2:用于环境监测的数据处理
某环境机构正在进行一系列地理空间分析,以监测土地使用的变化。 该分析需要大量的计算资源,并且该机构具有包含用于此目的的 GPU 的专用节点。 为确保地理空间分析有效运行而不与其他服务争夺资源,组织管理员:
- 使用键值对 gpu: true 配置启用 GPU 的节点。
- 使用 workload=high-resource:NoSchedule 为 GPU 节点添加污点,以防止在该处调度资源密集程度较低的 pod。
- 应用节点亲和性规则以在 GPU 节点上调度分析 pod:
- 类型 - 必选
- 键 - gpu
- 运算符 - In
- 值 - true
- 应用容忍度以允许 pod 在已添加污点的 GPU 节点上运行:
- 效果 - NoSchedule
- 键 - workload
- 运算符 - Equal
- 值 - high-resource
场景 3:共享要素服务的资源优化
某城市的 GIS 部门有许多要素服务,这些服务并没有被大量使用,但却共同承担着单个服务部署。 为了使部门能够在不使系统过载的情况下维护服务可用性,组织管理员:
- 使用键 resource-constrained 配置节点。
- 使用 resource-constrained:PreferNoSchedule 为资源受限的节点添加污点。
- 在资源可用性较低的节点上应用节点亲和性规则以确定调度优先级:
- 类型 - 首选
- 键 - resource-constrained
- 运算符 - DoesNotExist
- 对要素服务 pod 应用容忍度,以确保它们可以在有污点的节点上调度(尽管存在约束):
- 效果 - PreferNoSchedule
- 键 - resource-constrained
- 运算符 - Exists
管理 pod 部署位置
在管理 pod 部署位置之前,通过添加将用于定义节点亲和性的标注以及将为其设置容忍度的污点来配置节点组。
注:
在大多数环境中,可以使用节点池或节点组对工作负载进行分组。 建议将标注和污点应用于节点组,而不是此工作流中的单个节点。
要为新创建的 GIS 服务 pod 设置节点亲和性规则和容忍度,请完成以下步骤:
- 以管理员身份登录到 ArcGIS Enterprise Manager。
- 在侧边栏中,单击服务按钮。
- 选择要管理的 GIS 服务,然后单击 Pod 部署位置选项卡。
- 要将节点亲和性规则添加到 pod,请在节点亲和性部分中提供以下信息,然后单击添加:
- 类型 - 节点亲和性类型。 以下是可用的类型:
- 首选 (PreferredDuringSchedulingIgnoredDuringExecution) - 该 pod 优先调度在满足规则要求的节点上。
- 必选 (RequiredDuringSchedulingIgnoredDuringExecution) - 该 pod 必须调度在满足规则要求的节点上。
- 键 - 规则应该符合的节点标注或注记的键。
- 运算符 - 规则的运算符。 以下是可用的运算符:
- 位于 - 节点标注或注记必须位于指定的值列表中。
- 不位于 - 节点标注或注记不得位于指定的值列表中。
- 存在 - 节点必须具有指定标注或注记。
- 不存在 - 节点不得具有指定标注或注记。
- 值 - 用于与节点标注或注记匹配的值列表。
- 类型 - 节点亲和性类型。 以下是可用的类型:
- 要向 pod 添加容忍度,请在容忍度部分提供以下信息,然后单击添加:
- 效果 - 容忍度应匹配的污点效果。 以下是可用的效果:
- 无计划 - 没有匹配容忍度的新 pod 无法调度到带有污点的节点上。
- 无计划优先 - 没有匹配容忍度的新 pod 会尽量避免被调度到带有污点的节点,但不能完全保证。
- 键 - 容忍度应匹配的污点的键。
- 运算符 - 用于容忍度的运算符。 以下是可用的运算符:
- 等于 - Pod 可容忍具有指定键值的污点。
- 存在 - Pod 可容忍任意具有指定键的污点。
- 值 - 当运算设置为等于时,容忍度应匹配的污点值。
- 效果 - 容忍度应匹配的污点效果。 以下是可用的效果:
- 单击保存。
单击每个列表旁边的编辑按钮
以编辑节点亲和性规则和容忍度,或单击删除按钮
将其删除。
注:
如果进行了更改并且不再满足规则或容忍度的要求,已在节点上运行的 Pod 不会被逐出。