kubernetes-故障案例-资源耗尽

今天发现在kubernetes上创建POD时,有个节点一直不能分配到POD,并该节点上有些pod的状态为pendding.

查询该节点的状态:

mac-temp:echo test$ kubectl describe node 192.168.5.86
Name:			192.168.5.86
Role:			
.....

CreationTimestamp:	Thu, 05 Oct 2017 17:09:52 +0800
Conditions:
  Type			Status	LastHeartbeatTime			LastTransitionTime			Reason				Message
  ----			------	-----------------			------------------			------				-------
  DiskPressure 		False 	Sun, 11 Mar 2018 18:13:57 +0800 	Sun, 11 Mar 2018 17:13:59 +0800 	KubeletHasNoDiskPressure 	kubelet has no disk pressure
  MemoryPressure 	False 	Sun, 11 Mar 2018 18:13:57 +0800 	Sun, 11 Mar 2018 17:13:59 +0800 	KubeletHasSufficientMemory 	kubelet has sufficient memory available
  OutOfDisk 		False 	Sun, 11 Mar 2018 18:13:57 +0800 	Sun, 11 Mar 2018 17:13:59 +0800 	KubeletHasSufficientDisk 	kubelet has sufficient disk space available
  Ready 		True 	Sun, 11 Mar 2018 18:13:57 +0800 	Sun, 11 Mar 2018 17:13:59 +0800 	KubeletReady 			kubelet is posting ready status
Addresses:
  InternalIP:	192.168.5.86
  Hostname:	192.168.5.86

...

Events:
  FirstSeen	LastSeen	Count	From			SubObjectPath	Type		Reason			Message
  ---------	--------	-----	----			-------------	--------	------			-------
  7h		59m		2	kubelet, 192.168.5.86			Normal		NodeHasSufficientDisk	Node 192.168.5.86 status is now: NodeHasSufficientDisk
  7h		59m		2	kubelet, 192.168.5.86			Normal		NodeHasSufficientMemory	Node 192.168.5.86 status is now: NodeHasSufficientMemory
  7h		59m		2	kubelet, 192.168.5.86			Normal		NodeHasNoDiskPressure	Node 192.168.5.86 status is now: NodeHasNoDiskPressure
  7h		59m		2	kubelet, 192.168.5.86			Normal		NodeReady		Node 192.168.5.86 status is now: NodeReady
...

从状态可以看到有以下异常的信息:

status is now: NodeHasSufficientDisk
status is now: NodeHasSufficientMemory

status is now: NodeHasNoDiskPressure

status is now: NodeReady

因此,进入节点192.168.5.86 检查,发现/var/lib/docker所在的分区,已经使用了97%.

删除/var/lib/docker 所在分区的一些临时文件后或把该目录挂载到一较大的分区后,重启kebelet后问题解决。


NodeCondition:存放节点健康状况。
1. 属性Type:节点健康状况类型,包括Ready、OutOfDisk、MemoryPressure、DiskPressure和NetworkUnavailable,分别表示:
  1) Ready:表示节点是健康的,可以随时在上面创建POD
  2) OutOfDisk:表示这个节点没有空闲的磁盘空间了,已经不能在上面创建POD了
  3) MemoryPressure:表示这个节点上可用内存已经很少了
  4) DiskPressure:表示这个节点上可用磁盘空间已经很少了
  5) NetworkUnavailable:表示这个节点上网络没有被正确配置

2. 属性Status:表示某种类型健康状况的当前状态,目前只有True、False和Unknown,在kubernetes将来版本中还会继续添加新的状态。
  1) True:表示当前类型的健康状况确实存在
  2) False:表示当前类型的健康状况不存在
  3) Unknown:表示kubernetes无法确定当前类型的健康状况是否存在

3. 属性LastHeartbeatTime:表示上一次更新状态的时间
4. 属性LastTransitionTime:表示上一次状态变化的时间
5. 属性Reason:表示上一次状态变化的简单原因

6. 属性Message:表示上一次状态变化的详细原因


NodeCondition中:健康状况类型DiskPressure,用来表示这个节点上可用磁盘空间已经很少了。
新增了这个健康状况类型DiskPressure后,在两个方面会提升Kubernetes的使用:
1. 可以在调度POD的时候进行参考,如果节点上确实发生了DiskPressure这件事,那么就会由scheduler模块将POD调度到其他节点上。
2. 可以在控制节点的时候进行参考,如果节点上确实发生了DiskPressure这件事,那么就会由kubelet模块回收这个节点上的所有POD,将这些POD驱逐到其他节点上。

kubernetes正在快速的丰富和完善自身功能,从只有MemoryPressure,到增加了DiskPressure,kubernete给使用者提供了更多方式来处理应用容器化会遇到的问题。我们通过上面结构体的介绍可以发现,还可以继续丰富其他类型的Pressure,比如CPUPress、NetworkPress,这些都需要kubernets社区继续去完善,相信随着kubernetes新版本的发布,功能会变得越来越强大。

参考:

https://tonybai.com/2017/10/16/out-of-node-resource-handling-in-kubernetes-cluster/

https://kubernetes.io/docs/tasks/administer-cluster/out-of-resource/




  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
打开 socket 连接会耗尽资源的原因有很多,以下是一些常见的原因和解决方法: 1. 资源泄漏:在使用完 socket 连接后没有正确地关闭连接,导致连接资源无法释放。确保在使用完连接后调用 `close()` 或 `shutdown()` 方法来关闭连接。 2. 连接泄漏:在使用完连接后没有及时释放连接对象,导致连接资源无法回收。确保在使用完连接后及时将连接对象置为 null,使其可以被垃圾回收。 3. 连接数限制:操作系统或网络设备可能对同时打开的连接数有限制。可以通过调整操作系统的连接数限制或者合理地管理连接的生命周期来避免资源耗尽。 4. 高并发请求:如果同时有大量的请求需要建立 socket 连接,可能会导致资源耗尽。可以考虑使用连接池来管理连接,以便重复使用已经建立的连接,避免频繁地创建和关闭连接。 5. 慢速或堵塞的连接:如果连接的对端响应缓慢或者存在网络拥塞等问题,可能会导致连接资源被占用较长时间,进而耗尽可用的连接资源。可以考虑设置适当的超时时间,以便及时释放资源并重试。 6. 错误的连接使用方式:如果连接的使用方式不正确,比如频繁地创建和关闭连接,或者不合理地使用连接资源,都可能导致资源耗尽。需要合理地设计和使用连接,避免不必要的资源消耗。 在实际开发中,需要仔细分析具体的场景和问题,结合具体的技术栈和环境来解决资源耗尽的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值