自学内容网 自学内容网

13种pod的状态

13种pod的状态

生命周期

  • Pending:Pod被创建后进入调度阶段,k8s调度器依据pod声明的资源请求量和调度规则,为pod挑选一个适合运行的节点。当集群节点不满足pod调度需求时,pod将会处于pending状态。
  • Running:Pod被调度到节点上,k8s将pod调度到节点上后,进入running状态。
  • Succeeded:Pod运行成功,Pod中的所有容器都退出,且退出码为0。
  • Failed:Pod运行失败,Pod中的所有容器都退出,且退出码不为0。或被系统终止,pod将进入failed状态。
  • Unknown:Pod运行异常,因为某些原因无法取得pod状态,Pod处于unknown状态。

调度失败

常见错误状态(Unschedulable)

pod被创建后进入调度阶段,k8s调度器依据pod声明的资源请求量和调度规则,为pod挑选一个适合运行的节点。当集群节点不满足pod调度需求时,pod将会处于pending状态。造成调度失败的典型原因有:

  • 节点资源不足

k8s将节点资源(cpu,内存,磁盘等)进行数字量化,定义出节点资源容量(capacity)和节点资源可分配额(allocatable)。资源容量是指kubelet获取的计算节点当前的资源信息,而iyuan个分配额是pod的可用的资源。
pod容器有两种资源额度概念:

  • 请求值 (Request 容器至少能获得请求值大小)
  • 限制值 (Limit 容器至多能获得限制值大小)
    pod的资源请求量是pod中所有容器的资源请求之和
    pod的资源限制量是pod中所有容器的资源限制之和
    k8s默认调度器按照较小的请求值作为调度依据,保障可调度节点的资源可分配额一定不小于pod资源请求值。当集群没有一个节点满足pod的资源请求量,pod将会卡在pending状态。
    pod因为无法满足资源需求而被pending,可能是因为集群资源不足,需要进行扩容,也有可能是集群碎片化导致。
  • 超过Namespace资源配额

k8s用户可以通过资源配额对ns进行资源使用量限制,包括两个维度:

  • 限制某个对象类型(pod)可创建对象的总数
  • 限定某个对象类型可消耗的资源总数
    如果在创建或更新pod时申请的资源超过了资源配额,则pod将调度失败。此时需要检查ns资源配额状态,做出适当调整
  • 不满足nodeselector节点选择器

节点亲和性和反亲和性用于约束pod调度到哪些节点,而亲和性有细分为软亲和和硬亲和。对于软亲和规则,k8s调度器会尝试寻找满足对应规则的节点,如果找不到匹配的节点,调度器仍然会调度该pod。而当硬亲和规则不被满足时,pod将无法被调度,需要检查pod调度规则和目标节点状态,对调度规则或节点进行合理调整

  • 节点存在污点

k8s提供污点和容忍机制,用于避免pod被分配到不合适的节点上。家啊如节点上存在污点,而pod没有设置及相应的容忍,pod将不会调度到该节点。此时需要确认节点是否有携带污点的必要。如果不必要,移除污点,若pod可以分配到带有污点的节点


原文地址:https://blog.csdn.net/m0_74752717/article/details/142794412

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!