扩展资源的资源装箱

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

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

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

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

    1. {"utilization": 0, "score": 0},
    2. {"utilization": 100, "score": 10}

    resources 是一个可选参数,默认情况下设置为:

    1. "resources": [
    2. {"name": "CPU", "weight": 1},
    3. {"name": "Memory", "weight": 1}
    4. ]

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

    RequestedToCapacityRatioResourceAllocation 优先级函数如何对节点评分

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

    1. 请求的资源
    2. intel.com/foo: 2
    3. Memory: 256MB
    4. CPU: 2
    5. 资源权重
    6. intel.com/foo: 5
    7. Memory: 1
    8. FunctionShapePoint {{0, 0}, {100, 10}}
    9. 节点 Node 1 配置
    10. 可用:
    11. intel.com/foo : 4
    12. Memory : 1 GB
    13. CPU: 8
    14. 已用:
    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. 节点 Node 2 配置
    36. 可用:
    37. Memory: 1GB
    38. CPU: 8
    39. 已用:
    40. intel.com/foo: 2
    41. Memory: 512MB
    42. CPU: 6
    43. 节点得分:
    44. intel.com/foo = resourceScoringFunction((2+2),8)
    45. = (100 - ((8-4)*100/8)
    46. = (100 - 50)
    47. = 50
    48. = rawScoringFunction(50)
    49. = 5
    50. Memory = resourceScoringFunction((256+512),1024)
    51. = (100 -((1024-768)*100/1024))
    52. = 75
    53. = rawScoringFunction(75)
    54. = 7
    55. CPU = resourceScoringFunction((2+6),8)
    56. = (100 -((8-8)*100/8))
    57. = 100
    58. = rawScoringFunction(100)
    59. = 10
    60. NodeScore = (5 * 5) + (7 * 1) + (10 * 3) / (5 + 1 + 3)
    61. = 7