-
Notifications
You must be signed in to change notification settings - Fork 660
Description
[updated with current information]
arm64 jobs fail to schedule on Swarm, because the system identifies itself as "aarch64". A fix at #2411 in manager/scheduler/filter.go normalizes these names for the 64-bit Arm architecture.
Original report
The issue simply put is that Swarm doesn't always work on arm64 nodes, but sometimes it does. However the issue is sufficiently complicated that I don't yet have a minimum test case or a suggested line of code to fix.
There's information about this issue in a lot of places on the net, and this tracking issue attempts to sort out what works, what's not working, and a minimum suitable test to fix it.
The symptom is this kind of error message in the log file:
DEBU[2017-10-09T20:36:22.336625100Z] no suitable node available for task module=node node.id=xl2vxso5gh504rosy2u9nyqkc task.id=yj0vos4kyogoklebm3dvw50xb
and a current state of "PENDING".
Some related issues:
- 17.06 won't deploy stack anymore. no suitable node (unsupported platform on 3 nodes) on armhf docker cluster 17.06 won't deploy stack anymore. no suitable node (unsupported platform on 3 nodes) on armhf docker cluster #2294
- State 'Pending' is too vague when a constraint condition is not meet State 'Pending' is too vague when a constraint condition is not meet moby#33807
- Platform Filter for Service Scheduling Platform Filter for Service Scheduling #1981
- Adding Platforms field to TaskSpec Placement Adding Platforms field to TaskSpec Placement moby#33144
- Multi-architecture support in Swarm mode Multi-architecture support in Swarm mode moby#31348
- cross build and architecture labeling cross build and architecture labeling moby#35158
There may be additional details hiding elsewhere; I'll track those down as they are identified.
I'm sure there's a file somewhere that has mappings from variant names to canonical names - otherwise how would this work at all anywhere - but I haven't tracked down that file yet.