云服务器内容精选

  • 错误处理建议 超卖节点kubelet重启后,由于Volcano调度器和kubelet的资源视图不同步,部分新调度的作业会出现OutOfCPU的情况,属于正常现象,一段时间后会恢复正常,Volcano调度器能够正常调度在/离线作业。 在/离线作业提交后,因当前内核不支持离线作业修改为在线作业,因此不建议动态修改作业类型(添加或者删除Pod的annotation volcano.sh/qos-level: "-1")。 CCE通过cgroups系统中的状态信息收集节点上所有运行的Pod占用的资源量(CPU/内存),可能与用户监控到的资源使用率有所不同,例如使用top命令看到的资源统计。 对于增加超卖资源类型,如超卖资源由cpu变为cpu、memory,此时可以随时添加。 对于减少超卖资源类型,如由cpu、memory变为仅超卖cpu,此时需要在合适的时间进行更改,即分配率不超过100%时才可进行安全更改。 当离线作业先部署到节点,并占用了在线作业的资源,导致资源不足在线作业无法调度时,需要为在线作业设置比离线作业更高的priorityClass。 若节点上只有在线作业,且达到了驱逐水位线,则离线作业调度到当前节点后会很快被驱逐,此为正常现象。
  • kubelet超卖 规格约束 集群版本: v1.19集群:v1.19.16-r4及以上版本 v1.21集群:v1.21.7-r0及以上版本 v1.23集群:v1.23.5-r0及以上版本 v1.25及以上版本 集群类型:CCE Standard集群或 CCE Turbo 集群。 节点OS:EulerOS 2.9 (内核kernel-4.18.0-147.5.1.6.h729.6.eulerosv2r9.x86_64)或者Huawei Cloud EulerOS 2.0 节点类型:弹性虚拟机。 Volcano插件版本:1.7.0及以上版本。 使用限制 使用超卖特性时,需保证Volcano未启用overcommit插件。 修改超卖节点标签不会影响已经运行的pod。 运行中的pod无法进行在线和离线业务转换,如需转换需要重建pod。 集群中有节点配置超卖标签volcano.sh/oversubscription=true时,Volcano插件必须要增加oversubscription配置,否则会导致超卖节点调度异常。标签配置需要由用户保证,调度器不会对插件和节点配置进行检查。详细标签说明请参见表1。 超卖特性开关目前不支持统一配置,若要关闭超卖特性,需要同时进行以下操作: 去掉超卖节点的volcano.sh/oversubscription标签。 设置节点池的超卖开关over-subscription-resource为false。 修改Volcano调度器的名字为volcano-scheduler-configmap的configmap,并去掉oversubscription插件。 当节点设置cpu-manager-policy为静态绑核时,不允许将离线Pod设置为Guaranteed的Pod,若需要绑核则需要调整Pod为在线Pod,否则可能会发生离线Pod占用在线Pod的CPU导致在线Pod启动失败,以及离线Pod虽然调度成功但仍然启动失败的情况。 当节点设置cpu-manager-policy为静态绑核时,不应对所有在线Pod进行绑核,否则会出现在线Pod占用了所有的CPU或者memory资源导致上报的超卖资源很少的情况。
  • 操作步骤 下面介绍如何开启或关闭出口网络带宽保障。 登录CCE控制台,单击集群名称进入集群。 在左侧导航栏中选择“节点管理”,选择“节点池”页签,创建或更新节点池时在“高级配置”中添加以下标签。 volcano.sh/oversubscription=true volcano.sh/colocation=true 图1 节点标签设置 在左侧导航栏中选择“插件中心”,单击Volcano插件下的“安装”,并在“参数配置”中开启“在离线业务混部”。具体安装步骤请参见Volcano调度器。 如已安装Volcano插件,可单击“编辑”查看或修改配置。 图2 开启在离线业务混部 CPU Burst开关由打开到关闭时,已经设置CPU Burst的存量Pod不会关闭CPU Burst功能,关闭CPU Burst仅针对新建的Pod生效。 (可选)调整出口网络带宽保障参数。 确认Volcano插件处于正常运行状态后,可执行以下命令,编辑kube-system命名空间下名称为volcano-agent-configuration的configmap参数,将enable参数设置为true即可开启出口网络带宽保障(默认开启),同时可调整出口网络带宽保障参数。 kubectl edit configmap -nkube-system volcano-agent-configuration 示例如下: ... data: colocation-config: | { "globalConfig":{ "cpuBurstConfig":{ "enable":true }, "networkQosConfig":{ "enable":true, "onlineBandwidthWatermarkPercent":80, "offlineLowBandwidthPercent":10, "offlineHighBandwidthPercent":40 }, ... 参数编辑后会对集群中所有Huawei Cloud EulerOS 2.0操作系统的节点生效。 表1 networkQosConfig参数说明 名称 说明 默认值 配置范围 enable 是否开启出口网络带宽保障特性。 true true或false onlineBandwidthWatermarkPercent 在线业务总带宽水线值与机型的基准带宽的比值,即: 在线业务总带宽水线值 = 节点机型基准带宽 * onlineBandwidthWatermarkPercent/100 80 配置有效值范围:1-1000 说明: 由于实际的网络环境可能优于基准带宽,处于在基准带宽和最大带宽之间,因此配置范围支持大于100。 offlineLowBandwidthPercent 在线业务带宽使用超过水线时,离线业务最高总带宽占用量在机型基准带宽中的占比。 如果同节点的在线业务总带宽的超过节点机型基准带宽 * onlineBandwidthWatermarkPercent/100 ,则同节点的离线业务总带宽的不超过节点机型基准带宽 * offlineLowBandwidthPercent/100 10 offlineHighBandwidthPercent 在线业务带宽使用未超过水线时,离线业务最高总带宽占用量在机型基准带宽中的占比。 如果同节点的在线业务总带宽的未超过节点机型基准带宽 * onlineBandwidthWatermarkPercent/100,则同节点的离线业务总带宽的不超过节点机型基准带宽 * offlineHighBandwidthPercent/100 40 图3 出口网络带宽保障示例图 上图中,当在线业务带宽低于在线业务水线时,离线业务的带宽阈值处于一个相对较高的水平,即表示允许离线业务占用一定的带宽;当在线业务带宽超过在线业务水线时,则会相应地调低离线业务带宽阈值,以降低离线业务占用的带宽,预留出更多的带宽供在线业务使用。 如需关闭出口网络带宽保障特性,请确认Volcano插件处于正常运行状态,然后编辑kube-system命名空间下名称为volcano-agent-configuration的configmap参数,将enable参数设置为false即可。 kubectl edit configmap -nkube-system volcano-agent-configuration 修改参数如下: ... data: colocation-config: | { "globalConfig":{ "cpuBurstConfig":{ "enable":true }, "networkQosConfig":{ "enable":false, "onlineBandwidthWatermarkPercent":80, "offlineLowBandwidthPercent":10, "offlineHighBandwidthPercent":40 }, ...
  • 约束与限制 使用出口网络带宽保障特性需满足以下要求: 仅支持Huawei Cloud EulerOS 2.0操作系统的节点。 仅支持CCE Turbo集群,且集群版本为v1.23及以上。 集群中需要安装Volcano 1.9.0及以上版本的插件,且开启混合部署开关(即将插件高级配置中的colocation_enable设置为true)。 开启、修改或者关闭出口网络带宽保障特性,均需要保证Volcano插件处于正常运行状态。 对于安装Volcano插件之前节点上已运行的Pod,开启网络带宽保障后需要手动重启Pod才可生效。 卸载Volcano插件或关闭混合部署开关(即将插件高级配置中的colocation_enable设置为false)不会影响节点上已有的出口网络带宽保障设置。如需关闭该特性,请参见关闭出口网络带宽保障。 使用带宽限速有可能造成协议栈缓存积压。对于UDP等无反压机制的协议场景,可能出现有丢包、ENOBUFS等问题。 使用带宽限速会增加离线业务得不到带宽的风险,极端场景可能会出现业务因为带宽不足异常、Pod健康检查失败等问题。 出口网络带宽保障的例外场景: 当混部的在线Pod或者是离线Pod使用了网络带宽限速功能时,网络带宽限速功能的优先级会高于当前功能。 当Pod使用节点网络(hostNetwork)时,使用出口网络保障功能无法生效。