使用KOPS和AWS .

使用kubernetes时当前的痛苦之一就是你需要不断更新你的pod需要的资源这一事实一旦你达到10个不断开发的服务并因此需要更多的资源,这将成为一项艰巨的任务 . .

我目前有一个基于消息队列扩展的服务,在高峰时段,该服务最多可以有100个pod

我试图实现我的配置自动处理这种情况的情况,而我只在初始部署时指定请求和限制,并且一旦所有节点遭受内存压力情况,自动缩放器将只扩展和被驱逐的pod将被安排到新节点 .

到目前为止我们尝试了什么:

  • 设置驱逐规则以防止OOM方案

  • 这会驱逐“坏”的pod(使用的资源比指定的多),并将节点标记为“MemoryPressure = true”(到目前为止一直很好)

  • 然后根据他们的“错误”请求再次安排被驱逐的pod,并且他们被安排的节点也开始再次驱逐他们 .

  • 我读到BestEffort pods没有被安排到“MemoryPressure = true”标记的节点,但是当部署有10个pod时,由于BestEffort pods中缺少资源请求导致调度程序有时会放置大量这些pods在同一个节点上,一旦它们启动,它们会立即导致OOM情况,同时中断整个节点和其他服务

  • 我也尝试过alpha功能“TaintNodesByCondition”[当节点条件如此时,使用内存压力污染节点“但是在测试它时我意识到当我的所有节点都被污染时我的pod规范否认了要在那里安排pod,群集自动缩放器不会执行向外扩展事件,同时说明:

pod没有触发放大(如果添加了新节点,则不适合)

虽然这不正确,但在应用标签而不是污点时会看到相同的行为

那么我怎样才能实现这种理想的行为呢?