Black lives matter.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
Kubernetes 1.16 [alpha]
可以将 kube-scheduler 配置为使用 RequestedToCapacityRatioResourceAllocation
优先级函数启用资源箱打包以及扩展资源。
优先级函数可用于根据自定义需求微调 kube-scheduler 。
在 Kubernetes 1.15 之前,Kube-scheduler 用于允许根据主要资源,如 CPU 和内存对容量之比的请求对节点进行评分。
Kubernetes 1.16 在优先级函数中添加了一个新参数,该参数允许用户指定资源以及每个资源的权重,以便根据容量之比的请求为节点评分。
这允许用户通过使用适当的参数来打包扩展资源,从而提高了大型集群中稀缺资源的利用率。
RequestedToCapacityRatioResourceAllocation
优先级函数的行为可以通过名为 requestedToCapacityRatioArguments
的配置选项进行控制。
这个论证由两个参数 shape
和 resources
组成。
Shape 允许用户根据 utilization
和 score
值将功能调整为要求最少或要求最高的功能。
资源由 name
和 weight
组成,name
指定评分时要考虑的资源,weight
指定每种资源的权重。
以下是一个配置示例,该配置将 requestedToCapacityRatioArguments
设置为扩展资源 intel.com/foo
和 intel.com/bar
的装箱行为
{
"kind" : "Policy",
"apiVersion" : "v1",
...
"priorities" : [
...
{
"name": "RequestedToCapacityRatioPriority",
"weight": 2,
"argument": {
"requestedToCapacityRatioArguments": {
"shape": [
{"utilization": 0, "score": 0},
{"utilization": 100, "score": 10}
],
"resources": [
{"name": "intel.com/foo", "weight": 3},
{"name": "intel.com/bar", "weight": 5}
]
}
}
}
],
}
默认情况下禁用此功能
shape
用于指定 RequestedToCapacityRatioPriority
函数的行为。
{"utilization": 0, "score": 0},
{"utilization": 100, "score": 10}
上面的参数在利用率为 0% 时给节点评分为0,在利用率为 100% 时给节点评分为10,因此启用了装箱行为。 要启用最少请求,必须按如下方式反转得分值。
{"utilization": 0, "score": 100},
{"utilization": 100, "score": 0}
resources
是一个可选参数,默认情况下设置为:
"resources": [
{"name": "CPU", "weight": 1},
{"name": "Memory", "weight": 1}
]
它可以用来添加扩展资源,如下所示:
"resources": [
{"name": "intel.com/foo", "weight": 5},
{"name": "CPU", "weight": 3},
{"name": "Memory", "weight": 1}
]
weight 参数是可选的,如果未指定,则设置为1。 同样, weight 不能设置为负值。
本部分适用于希望了解此功能的内部细节的人员。 以下是如何针对给定的一组值计算节点得分的示例。
Requested Resources
intel.com/foo : 2
Memory: 256MB
CPU: 2
Resource Weights
intel.com/foo : 5
Memory: 1
CPU: 3
FunctionShapePoint {{0, 0}, {100, 10}}
Node 1 Spec
Available:
intel.com/foo : 4
Memory : 1 GB
CPU: 8
Used:
intel.com/foo: 1
Memory: 256MB
CPU: 1
Node Score:
intel.com/foo = resourceScoringFunction((2+1),4)
= (100 - ((4-3)*100/4)
= (100 - 25)
= 75
= rawScoringFunction(75)
= 7
Memory = resourceScoringFunction((256+256),1024)
= (100 -((1024-512)*100/1024))
= 50
= rawScoringFunction(50)
= 5
CPU = resourceScoringFunction((2+1),8)
= (100 -((8-3)*100/8))
= 37.5
= rawScoringFunction(37.5)
= 3
NodeScore = (7 * 5) + (5 * 1) + (3 * 3) / (5 + 1 + 3)
= 5
Node 2 Spec
Available:
intel.com/foo: 8
Memory: 1GB
CPU: 8
Used:
intel.com/foo: 2
Memory: 512MB
CPU: 6
Node Score:
intel.com/foo = resourceScoringFunction((2+2),8)
= (100 - ((8-4)*100/8)
= (100 - 25)
= 50
= rawScoringFunction(50)
= 5
Memory = resourceScoringFunction((256+512),1024)
= (100 -((1024-768)*100/1024))
= 75
= rawScoringFunction(75)
= 7
CPU = resourceScoringFunction((2+6),8)
= (100 -((8-8)*100/8))
= 100
= rawScoringFunction(100)
= 10
NodeScore = (5 * 5) + (7 * 1) + (10 * 3) / (5 + 1 + 3)
= 7