The GitHub Actions job "Required Checks" on 
texera.git/aws-eks/04-core-services-placement has failed.
Run started by GitHub user aicam (triggered by aicam).

Head commit for run:
71e40873c50d876cc7a379f5f991e6d1efbac0f8 / 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. That
pool also cannot be fixed in place: it is EKS-managed, and Auto Mode reconciles
any edit to it back within ~30 min.

Give CUs their own NodePool with consolidationPolicy: WhenEmpty, rendered by
templates/aws/computing-unit-nodepool.yaml and gated behind
computingUnitNodePool.enabled -- false by default, true in values-aws.yaml,
since it needs the karpenter.sh/v1 CRD. Karpenter then 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 and expiry, and can pin nodes forever (orphaned EC2).

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, and the NodePool renders its own node label and taint from those same
values, so the pool and the pods it exists to attract cannot drift apart; the
template fails the render if the pool is enabled without them.

Pool sizing is values-driven -- capacity types, architectures, zones, instance
types, consolidateAfter, expireAfter and the disruption budget all live in
values-aws.yaml, and every requirement list may be left empty to leave that
dimension unconstrained.

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/30026754139

With regards,
GitHub Actions via GitBox

Reply via email to