k8s中Pod处于Pending状态的解决方案

先来说明几个概念:

PV Persistent Volume )是持久化卷的意思,是对底层的共享存储的一种抽象。一般情况下 PV
kubernetes 管理员进行创建和配置,它和底层具体的共享存储技术有关,并通过插件完成和共享存
储的对接。
PVC Persistent Volume Claim )是持久化卷声明的意思,是用户对于存储需求的一种声明。换言
之, PVC 其实就是用户向 kubernetes 系统发出的一种资源需求申请。

使用StorageClass时要创建pv,pvc,pod

在高级存储中的静态模式下,k8s管理员预先创建许多各种各样的pv,等待pvc申请使用。如果是静态模式的话,要严格按照pv,pvc,pod的创建顺序。而删除pod则顺序反之

动态模式则是管理员无须预先创建PV,而是通过StorageClass自动完成PV的创建以及与PVC的绑

定。

问题:pod创建后出现pending状态

1.用describe查看这个pod的详细信息

看到最后一行有报错信息,说这个test-claim未被找到,说明创建pod上一步的创建pvc有问题,才导致PersistentVolumeClaim找不到(这个长单词简称pvc)

查看一下上一步创建pvc时的yaml文件

我是yaml文件的其中一行少了空格,导致这个yaml文件格式不正确,底下的截图是我修改后的正确的yaml文件

然后创建pvc

因为这次我用的是动态模式存储,我已经创建过storage class了,所以创建完这个pvc后,pv会动态创建

可以看出来创建pvc之后pv自己创建并且绑定了该pvc

回到刚才的问题,pvc创建成功后,再删除原先的nginx-pod,重新创建pod

发现nginx-pod已经是running状态了,问题解决

当一个Pod处于Pending状态时,这意味着它还没有被调度到一个节点上运行。要检查并定位导致Pod处于Pending状态的原因,可以执行以下步骤: 1. 使用`kubectl get pods`命令检查Pod状态和事件: ``` kubectl get pods ``` 这将列出集群所有Pod状态。查找处于Pending状态Pod,并查看它的事件列,可以得到一些关于为什么Pod无法调度的信息。 2. 检查Pod的调度限制和资源需求: 使用`kubectl describe pod <pod-name>`命令来获取有关Pod的详细信息,包括调度限制和资源需求。查看`Conditions`部分的信息,特别是`PodScheduled`条件,看看是否有任何错误或警告。 ``` kubectl describe pod <pod-name> ``` 在描述,注意查看`Events`部分,它可以提供关于为什么Pod无法调度的有用信息。 3. 检查节点资源: 检查集群的节点资源情况,确保有足够的可用资源(如CPU、内存)来调度Pod。可以使用以下命令来获取节点的资源使用情况: ``` kubectl describe node <node-name> ``` 在描述,查看`Allocated resources`部分以了解已经在节点上分配了多少资源。 4. 检查调度策略和节点选择器: 检查Pod的调度策略和节点选择器,确保它们与可用的节点匹配。如果Pod指定了节点选择器,并且没有满足该选择器的节点可用,那么Pod将一直处于Pending状态。确保节点选择器与节点的标签匹配。 ``` kubectl describe pod <pod-name> ``` 在描述,查找`Node Selector`部分以查看Pod的节点选择器。 通过这些步骤,你应该能够检查并定位导致Pod处于Pending状态的原因。根据具体情况,你可能需要调整调度限制、资源需求、节点资源或节点选择器来解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值