kubernetes - 由于调度失败,Pod 处于待处理状态

标签 kubernetes scheduler kubernetes-pod

我是 Kubernetes 新手,我正在尝试运行部署。

在我推送部署配置后,副本集已创建,并且该副本集将创建 Pod。但 Pod 仍保留在 Pending 中状态。

该 Pod 列出了一个无法安排的事件,因为没有可用的节点。输出kubectl describe pod foo-qa-1616599440 :

Events:
  Type     Reason            Age    From               Message
  ----     ------            ----   ----               -------
  Warning  FailedScheduling  25m    default-scheduler  0/6 nodes are available: 6 Insufficient pods.
  Warning  FailedScheduling  18m    default-scheduler  0/6 nodes are available: 6 Insufficient pods.
  Warning  FailedScheduling  11m    default-scheduler  0/6 nodes are available: 6 Insufficient pods.
  Warning  FailedScheduling  5m18s  default-scheduler  0/6 nodes are available: 6 Insufficient pods.

但是有可用的节点。 kubectl get nodes的输出:

NAME                                             STATUS   ROLES    AGE   VERSION
ip-xxx-xx-xx-xx.eu-central-1.compute.internal   Ready    <none>   64d   v1.17.12-eks-7684af
ip-xxx-xx-xx-xx.eu-central-1.compute.internal   Ready    <none>   64d   v1.17.12-eks-7684af
ip-xxx-xx-xx-xx.eu-central-1.compute.internal   Ready    <none>   54d   v1.17.12-eks-7684af
ip-xxx-xx-xx-xx.eu-central-1.compute.internal   Ready    <none>   64d   v1.17.12-eks-7684af
ip-xxx-xx-xx-xx.eu-central-1.compute.internal   Ready    <none>   54d   v1.17.12-eks-7684af
ip-xxx-xx-xx-xx.eu-central-1.compute.internal   Ready    <none>   64d   v1.17.12-eks-7684af

我注意到的另一件事是,正在创建许多相同的工作,并且所有工作的状态都是 Pending 。我不知道这是否是正常行为,但有超过 200 个并且还在计数中。输出 kubectl get jobs :

...
cron-foo-qa-1616598720           0/1           17m        17m
cron-foo-qa-1616598780           0/1           16m        16m
cron-foo-qa-1616598840           0/1           15m        15m
cron-foo-qa-1616598900           0/1           14m        14m
cron-foo-qa-1616598960           0/1           13m        13m
cron-foo-qa-1616599020           0/1           12m        12m
cron-foo-qa-1616599080           0/1           11m        11m
cron-foo-qa-1616599200           0/1           9m2s       9m2s
cron-foo-qa-1616599260           0/1           8m4s       8m4s
cron-foo-qa-1616599320           0/1           7m7s       7m7s
cron-foo-qa-1616599380           0/1           6m11s      6m12s
cron-foo-qa-1616599440           0/1           5m1s       5m1s
cron-foo-qa-1616599500           0/1           4m4s       4m4s
cron-foo-qa-1616599560           0/1           3m6s       3m6s
cron-foo-qa-1616599620           0/1           2m10s      2m10s
cron-foo-qa-1616599680           0/1           74s        74s
cron-foo-qa-1616599740           0/1                      2s

如果我在检查事件列表时正确的话,我会看到一些日程安排正在发生。 kubectl get events --sort-by='.metadata.creationTimestamp'的输出:

...
3s          Warning   FailedScheduling                  pod/cron-foobar-prod-1616590260-vwqsk           0/6 nodes are available: 6 Insufficient pods.
3s          Warning   FailedScheduling                  pod/cron-foobar-acc-1616590260-j29vx            0/6 nodes are available: 6 Insufficient pods.
3s          Warning   FailedScheduling                  pod/cron-foobar-prod-1616569560-g8mn2           0/6 nodes are available: 6 Insufficient pods.
3s          Normal    Scheduled                         pod/cron-foobar-acc-1616560380-6x88z            Successfully assigned middleware/cron-foobar-acc-1616560380-6x88z to ip-xxx-xxx-xxx-xxx.eu-central-1.compute.internal
3s          Warning   FailedScheduling                  pod/cron-foobar-prod-1616596560-hx895         0/6 nodes are available: 6 Insufficient pods.
3s          Warning   FailedScheduling                  pod/cron-foobar-prod-1616598180-vwls2         0/6 nodes are available: 6 Insufficient pods.
3s          Warning   FailedScheduling                  pod/cron-foobar-qa-1616536260-vh7bl           0/6 nodes are available: 6 Insufficient pods.
3s          Warning   FailedScheduling                  pod/cron-foobar-acc-1616571840-68l54            0/6 nodes are available: 6 Insufficient pods.
3s          Warning   FailedScheduling                  pod/cron-foobar-qa-1616564760-4wg7l           0/6 nodes are available: 6 Insufficient pods.
3s          Warning   FailedScheduling                  pod/cron-foobar-prod-1616571840-7wmlc           0/6 nodes are available: 6 Insufficient pods.
3s          Normal    Started                           pod/cron-foobar-prod-1616564700-6gk58         Started container cron
3s          Warning   FailedScheduling                  pod/cron-foobar-acc-1616587260-hrcmq            0/6 nodes are available: 6 Insufficient pods.
3s          Warning   FailedScheduling                  pod/cron-foobar-qa-1616595720-x5njq           0/6 nodes are available: 6 Insufficient pods.
3s          Warning   FailedScheduling                  pod/cron-foobar-acc-1616525820-x5vhr            0/6 nodes are available: 6 Insufficient pods.
3s          Warning   FailedScheduling                  pod/cron-foobar-qa-1616558100-x4p96           0/6 nodes are available: 6 Insufficient pods.

有人可以帮助我朝正确的方向前进吗?

最佳答案

But the pod stays in the Pending state.

The pod has an event listed that it can't be scheduled because there are no nodes available.

如果您已达到容量上限,这符合预期。您可以通过以下方式检查任何节点的容量:

kubectl describe node <node_name>

要获取节点名称,请使用:

kubectl get nodes

为了缓解这种情况,请使用更多节点或更少的 pod,或者进行配置,以便集群在发生这种情况时可以自动缩放。

关于kubernetes - 由于调度失败,Pod 处于待处理状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66784500/

相关文章:

google-cloud-platform - GCloud Compute Engine 不会删除或停止。不断重生

docker - Kubernetes Pod在调用具有未知证书颁发机构的Google Cloud pub/sub时失败

c++ - 独立的多线程进程同时阻塞

kubernetes - 为什么 Kubernetes 中需要 Pod 副本集?

docker - kubernetes pod的好用例是什么?

kubernetes - dnsConfig 在 GKE 中被跳过

docker - 负载平衡工作不正常

json - Elasticsearch(+ Kibana)中的 Fluentd 错误地解析了 Nginx json 日志

java调度程序不工作

process - 进程调度上下文中调度程序和调度程序有什么区别