You need to enable JavaScript to run this app. Kubernetes中通过kompose转换的Nginx Pod持续处于Pending状态求助
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes中通过kompose转换的Nginx Pod持续处于Pending状态求助

根因分析

从你提供的Pod事件日志可直接定位问题:调度器无可用节点分配Pod,触发Pending状态,具体原因有两个:

  1. 集群1个Master节点携带node-role.kubernetes.io/master污点,默认普通Pod未配置对应容忍规则,无法调度到Master节点
  2. 剩余2个工作节点携带node.kubernetes.io/unreachable污点,说明集群已和这两个节点断连,节点处于不可用状态,无法承载Pod运行

你能正常ping通公网域名仅说明节点有公网连通性,和集群内部节点调度、节点状态异常没有关联。

排查解决步骤

  • 优先修复工作节点不可达问题

    1. 执行kubectl get nodes确认节点状态,若2个工作节点显示为NotReady,登录对应节点排查:
    2. 检查kubelet运行状态:systemctl status kubelet,若服务异常执行systemctl restart kubelet重启
    3. 检查节点与Master节点的网络连通性,确认kube-apiserver的6443端口未被拦截
    4. 关闭节点上的防火墙、SELinux等可能拦截集群内部通信的规则,确认节点状态恢复为Ready后Pod会自动调度
  • 若为单节点测试集群(无可用工作节点),可允许Pod调度到Master节点,二选一执行即可:
    方案1:给当前Nginx Deployment添加污点容忍配置,修改Deployment的spec.template.spec字段,新增如下配置:

    spec:
      containers:
      - image: nginx
        name: something-cool
        ports:
          - containerPort: 80
        resources: {}
      # 新增以下内容
      tolerations:
      - key: node-role.kubernetes.io/master
        effect: NoSchedule
      restartPolicy: Always
    

    修改后重新执行kubectl apply -k .生效。

    方案2:直接移除Master节点的默认调度污点(仅适合测试环境,生产环境不推荐),执行命令:

    kubectl taint nodes --all node-role.kubernetes.io/master-
    
  • 验证结果
    配置生效后等待60秒左右,执行kubectl get pods查看Pod状态,若变为Running即为修复完成,也可通过kubectl describe pod <Pod名称>查看调度日志确认结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 21:27:05