字段名称 | 描述 |
规格放大 | 虚拟放大原生节点规格,调度更多的 Pod,让当前节点装箱率突破100%。 注意: |
静态放大系数-CPU | 支持输入1~3之间的数字,保留小数点后一位。 |
静态放大系数-内存 | 支持输入1~2之间的数字,保留小数点后一位。 |
调度时水位控制 | 设定当前原生节点目标资源利用率,保障稳定性。Pod 调度时,高于该水位的节点将不被选中。 调度时水位同时默认作为: 1. 驱逐停止水位线:节点利用率在达到运行时水位,发生驱逐后,驱逐到的目标水位线。
例如: 运行时水位为80,调度时水位为60,则节点利用率达到80后,开始驱逐,会按照可驱逐的 Pod 利用率高低,依次驱逐,直到水位线到60以下。 2. 低负载节点水位线:节点利用率在达到运行时水位,发生驱逐时,需要判断是否至少有三个原生节点的利用率低于这几个节点上的调度时水位线。
例如:有5个原生节点,每个原生节点的配置都是运行时水位为80,调度时水位为60,则节点利用率达到80后,开始判断是否要驱逐,要找可以容纳 Pod 的低负载原生节点,要求至少有三个原生节点的利用率低于60。 注意: 如果不同的原生节点调度水位不一样,需要判断自己原生节点上的利用率和调度时水位。 |
调度时 CPU 目标利用率 | 支持输入0~100之间的整数。 |
调度时内存目标利用率 | 支持输入0~100之间的整数。 |
运行时水位控制 | 设定当前原生节点目标资源利用率,保障稳定性。节点运行时,高于该水位的节点可能引发驱逐,前提需要在指定工作负载上标识可驱逐的标签。 注意: 1. 默认不驱逐业务 Pod。为避免驱逐关键的 Pod,该功能默认不驱逐 Pod。对于可以驱逐的 Pod,用户需要在这些 Pod 所属 workload 上做表示,组件才会在触发水位线时做驱逐操作。例如,statefulset、deployment 等对象设置可驱逐 annotation: descheduler.alpha.kubernetes.io/evictable: 'true' 2. 需要有足够多的低负载节点才会驱逐。为保证 Pod 在驱逐后有节点可以容纳,调度器在驱逐时要求至少有三个原生节点的利用率低于这几个节点上的调度时水位线。因此,如果集群中存在很多原生节点,但是开启水位线的原生节点数量小于三个,或者低于调度时水位线的原生节点少于三个,则驱逐无法执行。 |
运行时 CPU 目标利用率 | 支持输入0~100之间的整数。注意:运行时 CPU 目标利用率要大于调度时 CPU 目标利用率。 |
运行时内存目标利用率 | 支持输入0~100之间的整数。注意:运行时内存目标利用率要大于调度时内存目标利用率。 |
停止驱逐水位控制 | 自原生节点调度器v1.4.0版本及以后,支持控制台可视化配置停止驱逐水位,代表当某节点高负载时,会持续驱逐Pod到停止驱逐水位 |
停止驱逐 CPU 目标利用率 | 支持输入0~100之间的整数。注意:运行时 CPU 目标利用率要大于调度时 CPU 目标利用率。 |
停止驱逐内存目标利用率 | 支持输入0~100之间的整数。注意:运行时 CPU 目标利用率要大于调度时 CPU 目标利用率。 |
expansion.scheduling.crane.io/cpu
,expansion.scheduling.crane.io/memory
,示例如下:kubectl describe node 10.8.22.108...Annotations: expansion.scheduling.crane.io/cpu: 1.5 # CPU 放大系数expansion.scheduling.crane.io/memory: 1.2 # 内存放大系数...Allocatable:cpu: 1930m # 该节点原始可调度资源量ephemeral-storage: 47498714648hugepages-1Gi: 0hugepages-2Mi: 0memory: 1333120Kipods: 253...Allocated resources:(Total limits may be over 100 percent, i.e., overcommitted.)Resource Requests Limits-------- -------- ------cpu 960m (49%) 8100m (419%) # 该节点 Request 和 Limit 占用量memory 644465536 (47%) 7791050368 (570%)ephemeral-storage 0 (0%) 0 (0%)hugepages-1Gi 0 (0%) 0 (0%)hugepages-2Mi 0 (0%) 0 (0%)...
apiVersion: apps/v1kind: Deploymentmetadata:namespace: defaultname: test-schedulerlabels:app: nginxspec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:nodeSelector: # 指定节点调度kubernetes.io/hostname: 10.8.20.108 # 指定使用样例中的原生节点containers:- name: nginximage: nginx:1.14.2resources:requests:cpu: 1500m # 申请量大于放大之前的节点可调度量,但有小于放大之后的节点可调度量ports:- containerPort: 80
kubectl get deploymentNAME READY UP-TO-DATE AVAILABLE AGEtest-scheduler 1/1 1 1 2m32s
kubectl describe node 10.8.22.108...Allocated resources:(Total limits may be over 100 percent, i.e., overcommitted.)Resource Requests Limits-------- -------- ------cpu 2460m (127%) 8100m (419%) # 该节点 Request 和 Limit 占用量。可以看到,Request 总和超过了节点原始可调度量,节点规格放大成功。memory 644465536 (47%) 7791050368 (570%)ephemeral-storage 0 (0%) 0 (0%)hugepages-1Gi 0 (0%) 0 (0%)hugepages-2Mi 0 (0%) 0 (0%)
apiVersion: scheduling.crane.io/v1alpha1kind: ClusterNodeResourcePolicymetadata:name: housekeeper-policy-np-88888888-55555 # name 不能重名spec:applyMode: annotation # 默认值,暂不支持其它数值nodeSelector: # 用来选取一组相同配置的节点,比如下面是用来选取一个原生节点,它的 ID 是 np-88888888-55555。也可以使用一批节点共有的标签,实现批量节点的选择。matchLabels:cloud.tencent.com/node-instance-id: np-88888888-55555template:spec:# evictLoadThreshold 是原生节点运行时水位控制,设定当前这批原生节点驱逐资源利用率,保障稳定性。Pod 在原生节点上运行时,高于该水位的原生节点可能发生驱逐。为避免驱逐关键的 Pod,该功能默认不驱逐 Pod。对于可以驱逐的 Pod,用户需要显示给判断 Pod 所属 workload。例如,statefulset、deployment 等对象设置可驱逐 annotation:descheduler.alpha.kubernetes.io/evictable: 'true'。# evictLoadThreshold 要大于 targetLoadThreshold,否则驱逐后,节点可能持续被调度新的 Pod 导致抖动evictLoadThreshold:percents:cpu: 80memory: 80resourceExpansionStrategyType: static # 默认值,暂不支持其它数值staticResourceExpansion:ratios: # 节点规格放大系数,设定当前这批原生节点的放大系数cpu: "3" # 节点 CPU 的放大系数。建议不要设置得过大,否则可能有稳定风险,控制台限制最大数值为3memory: "2" # 节点内存的放大系数。建议不要设置得过大,否则可能有稳定风险,控制台限制最大数值为2# targetLoadThreshold 是原生节点调度时水位控制,设定当前这批原生节点目标资源利用率,保障稳定性。Pod 调度时,高于该水位的原生节点将不被选中。# targetLoadThreshold 要小于 evictLoadThreshold,否则驱逐后,节点可能持续被调度新的 Pod 导致抖动targetLoadThreshold:percents:cpu: 70memory: 70
apiVersion: scheduling.crane.io/v1alpha1kind: ClusterNodeResourcePolicymetadata:name: housekeeper-policy-np-88888888-55555 # name 不能重名spec:applyMode: annotation # 默认值,暂不支持其它数值nodeSelector: # 用来选取一组相同配置的节点,比如下面是用来选取一个原生节点,它的 ID 是 np-88888888-55555。也可以使用一批节点共有的标签,实现批量节点的选择。matchLabels:cloud.tencent.com/node-instance-id: np-88888888-55555template:spec:resourceExpansionStrategyType: auto # 开启节点动态放大autoResourceExpansion:crontab: 0 * * * 0-6decayLife: 168h# 设置节点动态放大的具体参数maxRatios:cpu: "2"memory: "1.5"minRatios:cpu: "1.0"memory: "1.0"targetLoadThreshold:percents:cpu: 50memory: 70# evictLoadThreshold 是原生节点运行时水位控制,设定当前这批原生节点驱逐资源利用率,保障稳定性。Pod 在原生节点上运行时,高于该水位的原生节点可能发生驱逐。为避免驱逐关键的 Pod,该功能默认不驱逐 Pod。对于可以驱逐的 Pod,用户需要显示给判断 Pod 所属 workload。例如,statefulset、deployment 等对象设置可驱逐 annotation:descheduler.alpha.kubernetes.io/evictable: 'true'。# evictLoadThreshold 要大于 targetLoadThreshold,否则驱逐后,节点可能持续被调度新的 Pod 导致抖动evictLoadThreshold:percents:cpu: 80memory: 80# targetLoadThreshold 是原生节点调度时水位控制,设定当前这批原生节点目标资源利用率,保障稳定性。Pod 调度时,高于该水位的原生节点将不被选中。# targetLoadThreshold 要小于 evictLoadThreshold,否则驱逐后,节点可能持续被调度新的 Pod 导致抖动targetLoadThreshold:percents:cpu: 70memory: 70
apiVersion: scheduling.crane.io/v1alpha1kind: ClusterNodeResourcePolicymetadata:name: housekeeper-policy-np-88888888-55555 # name 不能重名spec:applyMode: annotation # 默认值,暂不支持其它数值nodeSelector: # 用来选取一组相同配置的节点,比如下面是用来选取一个原生节点,它的 ID 是 np-88888888-55555。也可以使用一批节点共有的标签,实现批量节点的选择。matchLabels:cloud.tencent.com/node-instance-id: np-88888888-55555template:spec:# evictLoadThreshold 是原生节点运行时水位控制,设定当前这批原生节点驱逐资源利用率,保障稳定性。Pod 在原生节点上运行时,高于该水位的原生节点可能发生驱逐。为避免驱逐关键的 Pod,该功能默认不驱逐 Pod。对于可以驱逐的 Pod,用户需要显示给判断 Pod 所属 workload。例如,statefulset、deployment 等对象设置可驱逐 annotation:descheduler.alpha.kubernetes.io/evictable: 'true'。# evictLoadThreshold 要大于 targetLoadThreshold,否则驱逐后,节点可能持续被调度新的 Pod 导致抖动evictLoadThreshold:percents:cpu: 80memory: 80#################### 驱逐停止水位线 ### 数值要低于运行时水位 evictLoadThresholdevictTargetLoadThreshold:percents:cpu: 75memory: 75resourceExpansionStrategyType: static # 默认值,暂不支持其它数值staticResourceExpansion:ratios: # 节点规格放大系数,设定当前这批原生节点的放大系数cpu: "3" # 节点 CPU 的放大系数。建议不要设置得过大,否则可能有稳定风险,控制台限制最大数值为3memory: "2" # 节点内存的放大系数。建议不要设置得过大,否则可能有稳定风险,控制台限制最大数值为2# targetLoadThreshold 是原生节点调度时水位控制,设定当前这批原生节点目标资源利用率,保障稳定性。Pod 调度时,高于该水位的原生节点将不被选中。# targetLoadThreshold 要小于 evictLoadThreshold,否则驱逐后,节点可能持续被调度新的 Pod 导致抖动targetLoadThreshold:percents:cpu: 70memory: 70
本页内容是否解决了您的问题?