k8s重启Pod报错0/4 nodes are available

k8s中,一个Pod一重启就报这个错,但是其他的Pod就不会报这个错,0/4 nodes are available: 1 node(s) were unschedulable, 3 node(s) didn't have free ports for the requested pod ports. 因为是滚动更新的,原Pod在新的没起来得时候不会删除,我手动把原Pod删掉这个调度就会成功,否则就一直是这个状态,排了好几天都不知道到底哪里的问题。

img

根据您提供的信息,可能是因为Kubernetes Scheduler无法成功将Pod调度到可用节点上。您可以尝试通过以下方式解决该问题:

 1. 检查Kubernetes集群中节点的资源情况,确保有足够的CPU、内存和端口等资源可供使用。您可以使用以下命令来查看节点的资源使用情况:
kubectl top nodes
2. 检查Pod的调度策略是否正确。您可以通过以下方式检查Pod的调度策略:
kubectl describe pod <pod-name>

然后检查输出中的"Node Selector"和"Tolerations"字段是否与您的集群配置相匹配。
3. 尝试重新安装Kubernetes Scheduler并重启集群。有时候,Kubernetes Scheduler可能会出现一些问题,导致无法成功进行Pod调度。您可以通过重新安装Kubernetes Scheduler来解决这个问题。具体的步骤如下:

- 停止当前Scheduler组件。可以使用以下命令停止Scheduler:
kubectl delete deployment kube-scheduler -n kube-system
- 重新安装Kubernetes Scheduler组件。您可以通过以下方式重新安装Kubernetes Scheduler组件:
kubeadm init phase control-plane-scheduler --config kubeadm.yaml
- 重启Kubernetes集群。
  1. 如果您使用的是Kubernetes版本较旧,请尝试升级Kubernetes版本。较旧的版本可能会导致一些调度问题,升级到最新版本可能会解决这个问题。

一个Pod被调度到一个节点上,它需要使用一些端口与其他Pod/外部通信。
如果节点上端口资源已经被其他Pod用完了,那么新的Pod就无法被调度到该节点上。
你手动删除了原Pod,新的Pod得以被调度到了节点上。这表明节点上的端口资源已经被释放了,新的Pod才得以被调度。
这个错误通常是由于节点上的端口资源不足导致的,你需要检查节点上的端口资源是否足够,其他Pod是否占用了过多的端口资源。
你可以通过以下命令查看节点上的端口资源使用情况:
kubectl describe node
在结果中,查看节点上的端口资源使用情况,以及哪些Pod占用了哪些端口资源。
如果发现某些Pod占用了过多的端口资源,可以考虑调整它们的配置,以减少它们所需的端口资源

你把报错代码发给我看一下