扩展资源的资源装箱

    使用 RequestedToCapacityRatioResourceAllocation 优先级函数,可以将 kube-scheduler 配置为支持包含扩展资源在内的资源装箱操作。 优先级函数可用于根据自定义需求微调 kube-scheduler 。

    Kubernetes 允许用户指定资源以及每类资源的权重, 以便根据请求数量与可用容量之比率为节点评分。 这就使得用户可以通过使用适当的参数来对扩展资源执行装箱操作,从而提高了大型集群中稀缺资源的利用率。 RequestedToCapacityRatioResourceAllocation 优先级函数的行为可以通过名为 RequestedToCapacityRatioArgs 的配置选项进行控制。 该标志由两个参数 shaperesources 组成。 shape 允许用户根据 utilizationscore 值将函数调整为 最少请求(least requested)或最多请求(most requested)计算。 resources 包含由 nameweight 组成,name 指定评分时要考虑的资源, weight 指定每种资源的权重。

    以下是一个配置示例,该配置将 requestedToCapacityRatioArguments 设置为对扩展资源 intel.com/foointel.com/bar 的装箱行为

    默认情况下此功能处于被禁用状态

    shape 用于指定 RequestedToCapacityRatioPriority 函数的行为。

    1. shape:
    2. - utilization: 0
    3. score: 0
    4. - utilization: 100
    5. score: 10

    上面的参数在 utilization 为 0% 时给节点评分为 0,在 utilization 为 100% 时给节点评分为 10,因此启用了装箱行为。 要启用最少请求(least requested)模式,必须按如下方式反转得分值。

    1. resources:
    2. - name: cpu
    3. weight: 1
    4. - name: memory
    5. weight: 1

    它可以用来添加扩展资源,如下所示:

    weight 参数是可选的,如果未指定,则设置为 1。 同时,weight 不能设置为负值。

    节点容量分配的评分

    本节适用于希望了解此功能的内部细节的人员。 以下是如何针对给定的一组值来计算节点得分的示例。

    1. 请求的资源
    2. intel.com/foo : 2
    3. memory: 256MB
    4. cpu: 2
    5. intel.com/foo : 5
    6. memory: 1
    7. cpu: 3
    8. FunctionShapePoint {{0, 0}, {100, 10}}
    9. 节点 Node 1 配置
    10. 可用:
    11. intel.com/foo : 4
    12. memory : 1 GB
    13. 已用:
    14. intel.com/foo: 1
    15. memory: 256MB
    16. cpu: 1
    17. 节点得分:
    18. intel.com/foo = resourceScoringFunction((2+1),4)
    19. = (100 - ((4-3)*100/4)
    20. = (100 - 25)
    21. = 75
    22. = rawScoringFunction(75)
    23. = 7
    24. memory = resourceScoringFunction((256+256),1024)
    25. = (100 -((1024-512)*100/1024))
    26. = 50
    27. = rawScoringFunction(50)
    28. = 5
    29. cpu = resourceScoringFunction((2+1),8)
    30. = (100 -((8-3)*100/8))
    31. = 37.5
    32. = rawScoringFunction(37.5)
    33. = 3
    34. NodeScore = (7 * 5) + (5 * 1) + (3 * 3) / (5 + 1 + 3)
    35. = 5
    36. 节点 Node 2 配置
    37. 可用:
    38. intel.com/foo: 8
    39. memory: 1GB
    40. cpu: 8
    41. 已用:
    42. intel.com/foo: 2
    43. memory: 512MB
    44. cpu: 6
    45. 节点得分:
    46. intel.com/foo = resourceScoringFunction((2+2),8)
    47. = (100 - ((8-4)*100/8)
    48. = (100 - 50)
    49. = 50
    50. = rawScoringFunction(50)
    51. = 5
    52. memory = resourceScoringFunction((256+512),1024)
    53. = (100 -((1024-768)*100/1024))
    54. = 75
    55. = rawScoringFunction(75)
    56. = 7
    57. cpu = resourceScoringFunction((2+6),8)
    58. = (100 -((8-8)*100/8))
    59. = 100
    60. = rawScoringFunction(100)
    61. = 10
    62. NodeScore = (5 * 5) + (7 * 1) + (10 * 3) / (5 + 1 + 3)