0x00 上下文

最近在开发时,我们开发环境的k8s环境经常不稳定。初步分析发现是pod在9台机器上调度不均匀导致的。

项目k8s的简单概要如下:

0x01 开发环境资源告急

表现

因为后端微服务日渐增多,在集群总体内存使用率只有60%左右的情况下,经常发生dev或者qa环境崩溃,导致网站不能访问,阻碍开发和测试进度。

排查过程

查询9个节点的资源占用情况,发现有节点存在内存压力(MemeryPressure)

Untitled

持续关注节点监控,在存在内存压力的节点上发现偶尔会CPU占用飙升的问题。这个可能和k8s的GC与JVM的频繁GC有关系,没有深究。

原因分析

在k8s的机制下,为了保证node的稳定持续运行,存在内存压力的节点可能会驱逐(Evicted)Pod。

在正确的实践下,驱逐pod并不会导致服务不可用。在我们的场景下导致服务不可用是因为以下几个原因: