Cannot deploy locally built charm on arm64 Kubernetes environment
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Canonical Juju |
Triaged
|
High
|
Unassigned |
Bug Description
A user which owns an arm64 laptop used microk8s to deploy his Kubernetes cluster, and then bootstrapped a Juju controller on it. The controller bootstrapped properly, but when he tried to deploy a locally built charm, it was blocked in Waiting status.
Looking through the Kubernetes cluster reveals that the Charm's pod is stuck in a Pending state. It's status reveals the following:
status:
conditions:
- lastProbeTime: null
lastTransit
message: '0/1 nodes are available: 1 node(s) didn''t match Pod''s node affinity/selector.'
reason: Unschedulable
status: "False"
type: PodScheduled
phase: Pending
The pod's nodeSelector is this:
nodeSelector:
kubernetes.
The pod did not get scheduled on any node because the node selector is set to match amd64 nodes in a cluster that only has arm64.
Looking at the container images used in the Pod Spec (jujusolutions/
Kubernetes pod spec spawned for the charm: https:/
Kubernetes nodes: https:/
Juju version: 2.8.27
Environment: Ubuntu 20.04, linux/arm64.
[1] https:/
[2] https:/
What happens if you juju deploy with `--constraints arch=amd64`?
Or `juju set-model- constraints arch=amd64` then juju deploy?