The one amd64 node is the build machine, so say so
evo carries hanzo.ai/no-ci=true:NoSchedule and evo is the only amd64 node this cluster has. The image is a single amd64 manifest, so nodeSelector arch=amd64 and this toleration are one statement: without the second, the workload has nowhere at all to run. NoSchedule does not evict, which is what made that invisible. Two replicas kept answering while a surge pod sat Pending for three minutes — 0/2 nodes available, one wrong architecture and one tainted — and the surface would have stayed up until the first restart, reboot or rollout and then had nowhere to come back to. Forty-five pods already carry this toleration, including the CD control plane and the hanzod validators. Verified by rolling both replicas out and back: quotes answer on 1, 8453 and 96369, /v1/chain/C/rpc is 0x17871, preflight 204. The fix that removes the need is upstream: the published image is one amd64 manifest rather than an index, so nothing about this workload could schedule on spark even if the taint went away. Co-authored-by: Hanzo Dev <[email protected]>
This commit is contained in:
@@ -49,6 +49,25 @@ command:
|
||||
nodeSelector:
|
||||
kubernetes.io/arch: amd64
|
||||
|
||||
# evo is the ONLY amd64 node, and it carries `hanzo.ai/no-ci=true:NoSchedule` —
|
||||
# it is also the build machine, and the taint keeps ordinary work off it. So the
|
||||
# selector above and this are one statement, not two: without the toleration
|
||||
# this workload has nowhere at all to run.
|
||||
#
|
||||
# NoSchedule does not evict, which is why that was invisible for an hour — two
|
||||
# replicas kept serving while a third sat Pending, and the surface would have
|
||||
# stayed up until the first restart, node reboot or rollout and then had nowhere
|
||||
# to come back to. Forty-five pods already carry this, including the CD control
|
||||
# plane and the hanzod validators; the toleration is how anything says "I have
|
||||
# to be on the big machine".
|
||||
#
|
||||
# The honest fix is upstream: the image is a single amd64 manifest, and an index
|
||||
# with an arm64 arm would let this schedule on spark and need none of this.
|
||||
tolerations:
|
||||
- key: hanzo.ai/no-ci
|
||||
operator: Exists
|
||||
effect: NoSchedule
|
||||
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8080
|
||||
|
||||
Reference in New Issue
Block a user