跳轉到

EKS Auto Mode NodePool 與 Cluster Autoscaler 衝突

概念概覽

衝突根本原因

核心知識

衝突根本原因

EKS Auto Mode 啟用後預設加入 general-purposesystem NodePool(由 Karpenter 管理)。Karpenter 為 event-driven,反應速度秒級;CA 需 2-4 分鐘。當 pod 需要調度時:

  1. Karpenter 搶先啟動 Bottlerocket 節點並調度 pod
  2. CA 看到「No unschedulable pods」→ 不觸發 scale-up
  3. CA 不報錯、只是完全沉默,難以察覺

副作用:Bottlerocket OS 與某些 Istio init container 不相容,pod 卡在 Init:0/1

節點識別方式

類型 hostname 格式 label
Auto Mode(Karpenter) i-xxxxxxxxx(instance ID) eks.amazonaws.com/compute-type=auto
Managed Node Group ip-x-x-x-x.region.compute.internal

最小風險解法:nodePools=[] 移除 NodePool

# 錯誤:完全關閉 Auto Mode 會失去 elasticLoadBalancing/blockStorage
# 正確:只移除 Karpenter NodePool,保留其他 Auto Mode 功能
aws eks update-cluster-config \
  --compute-config '{"nodePools": []}' \
  --kubernetes-network-config '...' \
  --storage-config '...'

注意update-cluster-config 修改 compute-config 時,必須同時傳入 --compute-config--kubernetes-network-config--storage-config 三個參數,缺一不可。

PDB 阻擋 drain 的處理

若 PDB 阻擋 kubectl drain,非生產環境可直接 kubectl delete pod 強制驅逐;生產環境需先確認有足夠副本再操作。

經驗教訓

  • CA 和 Auto Mode NodePool 不建議同時存在:Karpenter 搶走 pod 後 CA 誤判不需擴容,CA 不報錯只是靜默不動

  • 啟用 EKS Auto Mode 前需先確認 workload 與 Bottlerocket OS 的相容性,特別是 Istio init container

  • update-cluster-config 修改 compute-config 必須同時傳三個 config,缺一報錯

  • nodePools=[] 比 enabled=false 更穩妥,可保留 elasticLoadBalancing/blockStorage 只移除 Karpenter NodePool

常見陷阱

  • CA 在 Karpenter 搶先調度後完全靜默,不報錯也不擴容,問題難以察覺

  • Bottlerocket 節點導致 Istio init container 卡在 Init:0/1

  • update-cluster-config 三個 config 缺一會報錯,容易遺漏 kubernetes-network-config 或 storage-config

最佳實踐

  • CA 和 Auto Mode NodePool 選一種機制負責節點管理,不建議同時存在

  • 用 nodePools=[] 移除 NodePool 而非完全關閉 Auto Mode,保留 elasticLoadBalancing/blockStorage

  • 透過 hostname 格式和 eks.amazonaws.com/compute-type=auto label 識別 Auto Mode 節點

相關概念

  • cluster-autoscaler----dangling---
  • eks-node-group----dangling---
  • eks-qa-nodegroup-debug----dangling---
  • karpenter----dangling---

相關視角

以下頁面與本概念共享主題,但從不同角度切入。保留獨立視角同時提供交叉參考:

來源 Sessions

日期 Session 貢獻摘要

| 2026-03-18 | 423fd9da-802c-452a-8e2f-03de575f2126 | 揭露 EKS Auto Mode(Karpenter)與傳統 CA 並存時,Karpenter 搶先調度導致 CA 完全沉默的根本機制,以及最小風險解法 |


本概念頁面由 Semi-Brain Wiki 系統自動維護

最後更新: 2026-03-18