Pod 一直处于 Pending 状态

网友投稿 304 2022-09-13

Pod 一直处于 Pending 状态

Pending 状态说明 Pod 还没有被调度到某个节点上,需要看下 Pod 事件进一步判断原因,比如 :

下面列举下可能原因和解决方法。

节点资源不够

节点资源不够有以下几种情况:

CPU 负载过高剩余可以被分配的内存不够剩余可用 GPU 数量不够 (通常在机器学习场景,GPU 集群环境)

如果判断某个 Node 资源是否足够? 通过 kubectl describe node 查看 node

资源情况,关注以下信息:

Allocatable : 表示此节点能够申请的资源总和Allocated resources : 表示此节点已分配的资源 (Allocatable 减去节点上所有 Pod 总的 Request)

Capacity: cpu: 2 ephemeral-storage: 9217Mi hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 2031912Ki pods: 110Allocatable: cpu: 1600m ephemeral-storage: 9217Mi hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 1452355993 pods: 110Allocated resources: (Total limits may be over 100 percent, i.e., overcommitted.) Resource Requests Limits -------- -------- ------ cpu 350m (21%) 0 (0%) memory 70Mi (5%) 170Mi (12%) ephemeral-storage 0 (0%) 0 (0%) hugepages-1Gi 0 (0%) 0 (0%) hugepages-2Mi 0 (0%) 0 (0%)

前者与后者相减,可得出剩余可申请的资源。如果这个值小于 Pod 的 request ,就不满足 Pod 的

资源要求, Scheduler 在 Predicates (预选) 阶段就会剔除掉这个 Node ,也就不会调度上去。

不满足 nodeSelector 与 affinity

如果 Pod 包含 nodeSelector 指定了节点需要包含的 label,调度器将只会考虑将 Pod 调度到包含这些 label 的 Node 上,如果没有 Node 有这些 label 或者有这些 label 的 Node 其它条件不满足也将会无法调度。参考官方文档:node/#nodeselector

如果 Pod 包含 affinity (亲和性)的配置,调度器根据调度算法也可能算出没有满足条件的Node,从而无法调度。 affinity 有以下几类 :

nodeAffinity: 节点亲和性,可以看成是增强版的 nodeSelector,用于限制 Pod 只允许被调度到某一部分 Node。podAffinity: Pod 亲和性,用于将一些有关联的 Pod 调度到同一个地方,同一个地方可以是指同一个节点或同一个可用区的节点等。podAntiAffinity: Pod 反亲和性,用于避免将某一类 Pod 调度到同一个地方避免单点故障,比如将集群 DNS 服务的 Pod 副本都调度到不同节点,避免一个节点挂了造成整个集群DNS 解析失败,使得业务中断。

[root@master ~]# kubectl get pod -n kube-system -o widecoredns-674d655c65-k8x88 1/1 Running 0 19d 10.233.70.1 master coredns-674d655c65-lg66w 1/1 Running 0 6m11s 10.233.90.1 node1 coredns-674d655c65-v5hjn 1/1 Running 0 19d 10.233.70.2 master [root@master ~]# kubectl get pod -n kube-system --show-labelscoredns-674d655c65-k8x88 1/1 Running 0 19d k8s-app=kube-dns,pod-template-hash=674d655c65coredns-674d655c65-lg66w 1/1 Running 0 77s k8s-app=kube-dns,pod-template-hash=674d655c65coredns-674d655c65-v5hjn 1/1 Running 0 19d k8s-app=kube-dns,pod-template-hash=674d655c65 template: metadata: creationTimestamp: null labels: k8s-app: kube-dns spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: k8s-app: kube-dns topologyKey: kubernetes.io/hostname[root@master ~]# kubectl get pod -n kube-system -o widekube-system coredns-76b666bbdb-kg8lp 1/1 Running 0 64s 10.233.96.1 node2 kube-system coredns-76b666bbdb-lzm2x 1/1 Running 0 53s 10.233.70.4 master kube-system coredns-76b666bbdb-ptzw6 1/1 Running 0 63s 10.233.90.2 node1

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:PR人:主演半月宣6个代言、10+金主追加植入,《山河令》成就了哪些品牌?
下一篇:传输层 传输层协议和应用层协议之间的关系
相关文章

 发表评论

暂时没有评论,来抢沙发吧~