The GitHub Actions job "Required Checks" on texera.git/aws-eks/04-core-services-placement has succeeded. Run started by GitHub user aicam (triggered by aicam).
Head commit for run: 87e8304cbd801bd63ecbe90d783a0a68d84dbff8 / ali <[email protected]> feat(k8s): isolate computing-unit pods on a dedicated Karpenter NodePool CU pods are bare pods — the cu-manager creates them directly, with no Deployment/StatefulSet behind them (KubernetesClient.createPod). If a cluster autoscaler evicts one to repack an underutilized node, nothing recreates it and the CU is permanently lost (often leaving a "zombie" DB row still marked RUNNING). EKS Auto Mode's default pool runs consolidationPolicy: WhenEmptyOrUnderutilized, which can mass-evict live CUs during a burst. Give CUs their own NodePool with consolidationPolicy: WhenEmpty (bin/k8s/utils/cu-nodepool.yaml, applied standalone via kubectl): Karpenter never evicts a running CU to repack, while EMPTY CU nodes still scale down normally. Deliberately NOT karpenter.sh/do-not-disrupt on the CU pods — that also blocks empty-node scaledown/expiry and can pin nodes forever (orphaned EC2). general-purpose-nodepool-disruption.yaml is the matching patch for any CU that lands on the EKS-managed default pool. The cu-manager pins CU pods onto that pool via a nodeSelector + toleration, driven by three env vars (KUBERNETES_COMPUTE_UNIT_NODE_SELECTOR_LABEL / _VALUE / _TOLERATION_KEY). All three are empty by default, so local / on-prem installs schedule CU pods on the cluster's default pool unchanged (no-op); values-aws.yaml sets them to match the cu-pool label/taint. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_011uddVDp38gmru6oqVBwHFg Report URL: https://github.com/apache/texera/actions/runs/29850395931 With regards, GitHub Actions via GitBox
