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
