kubelet内存不足会导致磁盘读取激增吗?
环境
平台: AWS
Kubernetes版本: v1.11.5
现象
在Kubernetes的节点上使用的实例的读取操作不定时地发生大爆发。
期间CPU略有增加,其他指标没有明显变化。
由于达到了EBS的上限,读取操作受到限制,导致节点的状态变为未知,部署的Pod的响应变差等故障发生。


虽然我从未在实时中遇到过这种情况,但即使我幸运地遇到了,由于受到限制,似乎也无法登录。
进行条件调查
-
- あるアプリケーションのpodを展開しているnodeでのみ起きる
モニタリング用やcontrollerのnodeでは起きたことがない
起動後しばらく経ったnodeで起きる
10日以上
アプリケーションの起動時間は無関係
ちょくちょくpodを作り直しても起きる
只有部署应用程序的节点发生了这种情况,所以肯定有某种关系。
然而,从观察cadvisor的指标来看,kubelet和每个pod的读取量都有所增加,所以应用程序的pod似乎不是直接的原因。
线索
那个看起来像的东西
模棱两可。
看起来很像,但有点不同的东西。
这个链接中贴出的度量值看起来很相似,但是实在太旧了。
这也有点老,设备也不一样。
可能是因为内存不足导致的问题吗?
确实,出现问题的节点确实在使用了满负荷的内存运行。
进行实验
在本地使用Vagrant创建集群
为worker节点分配4GiB内存
同时在部署消耗内存的pod时使用iotop观察情况


虽然暂时遇到了类似于47928的情况,但不能确定这是否与实际环境中发生的问题相同。
不管怎样,这肯定是一个必须要采取措施解决的问题。
看起来内存不足是一个问题,但这真的是Kubernetes的问题吗?
目前的结论和对策是什么?
POD领域可能会出现压缩系统领域内存的症状
(仅在一段时间后启动的节点上出现,可以直观地理解)
无论如何,OOM Killer在做什么呢?
根据第47928行所说,在kubelet的标志、kube-reserved和system-reserved中分配资源并观察情况
不想浪费太多资源,还需要调查应该分配多少资源…