我有一个包含两种节点类型的集群:x86 和 arm。arm 核心稍弱一些,因此我想为 arm 节点 X1.5 上的 pod 提供与 x86 节点上相同的 CPU 数量。

我可以创建两个部署,但这会使我的 Keda 自动缩放器变得复杂。假设我根据队列进行缩放,我找不到在两个部署上同时设置 ScaledObject 的方法。

有没有办法根据节点污点/亲和性为容器提供不同的资源限制?

0


最佳答案
1

在 Kubernetes 中,您可以根据节点特性,结合使用节点亲和性来管理 Pod 的资源分配。但是,由于我们不能直接根据节点类型为容器设置不同的资源限制,因此我们可以尝试通过以下方法进行操作。

节点亲和性:您可以使用来控制您的 pod 的调度位置。例如,您可以标记您的节点(例如,arch=x86 和 arch=arm),然后在您的 pod 规范中设置亲和性规则。

请参阅以下示例:

affinity:
  nodeAffinity:

requiredDuringSchedulingIgnoreDuring
Execution: 
    nodeSelectorTerms:
       -matchExpressions:
         - key:arch
          operator:In
          Values:
             -arm

如果您必须对 KEDA 进行部署,则可以使用来定位多个部署。

4

  • 是的,我知道如何将 Pod 限制到特定节点池。我缺少的部分是如何将它们扩展为一个部署。您说可以使用 KEDA 完成,但我不知道如何操作,您有更具体的文档吗?


    – 

  • KEDA 不支持通过 Scaled Object 将多个部署扩展为单个实体,但为了实现类似的功能,您需要使用相同的指标为每个部署创建单独的 scaledObject 。


    – 

  • 确保两个 ScaledObjects 使用指向相同外部指标的相同触发器配置,并尝试调整两个 ScaleObject 中的扩展参数,以在两个部署中保持平衡的扩展策略。


    – 

  • 您可以参考由 Suman Das 撰写的使用 Kubernetes 事件驱动自动缩放器 (KEDA)以获取更多信息。


    –