You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes+Longhorn问题:新增Worker节点就绪但业务Pod无法调度

Kubernetes业务Pod无法调度至新增Longhorn Worker节点的排查方案

核心排查方向(按优先级排序)


  1. 检查业务Deployment的调度约束配置
    系统Pod无自定义调度限制,但业务Deployment可能存在nodeSelector、nodeAffinity或topologySpreadConstraints,绑定了旧节点的专属标签(如自定义硬件标识、可用区标签)。

    • 执行命令查看调度相关配置:
      kubectl get deployment <业务Deployment名称> -n <命名空间> -o yaml | grep -A 20 -B 5 "nodeSelector\|affinity\|topologySpreadConstraints"
      
    • 若发现requiredDuringSchedulingIgnoredDuringExecution类型的硬亲和规则,或nodeSelector指定了新节点缺失的标签,需更新Deployment配置移除不必要约束,或给新节点补充对应标签。
  2. 验证Longhorn存储绑定限制
    若业务Pod使用已创建的PVC,对应的PV可能通过Longhorn绑定到了旧节点的存储卷,导致Pod只能调度到该节点:

    • 查看PVC关联的PV节点亲和性:
      kubectl get pv $(kubectl get pvc <业务PVC名称> -n <命名空间> -o jsonpath='{.spec.volumeName}') -o yaml | grep -A 10 "nodeAffinity"
      
    • 若PV绑定了旧节点标签,可尝试:
      • 创建新PVC并更新Deployment使用新PVC,Longhorn会根据调度规则绑定到新节点;
      • 若需复用现有数据,通过Longhorn卷克隆功能生成新卷后绑定到新PVC。
  3. 检查节点标签匹配
    确认新节点是否具备业务Pod要求的所有标签:

    • 对比新旧节点标签:
      kubectl get nodes --show-labels | grep -E "<旧节点名称>|<新节点名称>"
      
    • 若新节点缺失业务Pod依赖的标签,执行命令补充:
      kubectl label nodes <新节点名称> <标签键>=<标签值>
      
  4. 验证调度器配置
    确认默认调度器未被修改,或业务Pod未指定自定义调度器:

    • 检查Deployment的调度器指定:
      kubectl get deployment <业务Deployment名称> -n <命名空间> -o yaml | grep "schedulerName"
      
    • 若使用自定义调度器,需确认其规则未排除新节点;若使用默认调度器,检查调度器配置是否存在节点优先级过滤:
      kubectl get configmap kube-scheduler -n kube-system -o yaml
      

快速验证方法

创建无任何约束的测试Pod,验证新节点是否可正常接收业务负载:

kubectl run test-business-pod --image=nginx --restart=Never -n <业务命名空间>

若测试Pod成功调度至新节点,说明问题出在现有业务Deployment的配置或存储绑定;若仍无法调度,需检查集群全局调度策略(如调度器插件、准入控制器)。

内容的提问来源于stack exchange,提问作者tryzrxcatch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 17:43:09