Comment 10 for bug 2049770

Revision history for this message
RafaƂ Krzewski (rafal-krzewski) wrote :

I'm trying to deploy kubernetes-control-plane to kvm but it turns out to be difficult.

I've used the following placement directive for kubernetes-control-plane in the bundle definition:

    to:
    - kvm:0
    - kvm:1
    - kvm:2
    constraints: cores=60 mem=240G

It failed to deploy, with the following message displayed for the machine:

no obvious space for container "1/lxd/0", host machine has spaces: "stagnum", "undefined"

MAAS shows following sppaces:

stagnum untagged MAAS-provided fabric-0 192.168.3.0/24 16%
No space untagged No DHCP fabric-1 192.168.122.0/24 100%

I gather that "undefined" is "No space" one created for 192.168.122.0/24 likely coming from KVM/QEMU

I tried changing the constraints to "cores=60 mem=240G spaces=stagnum" but now I'm getting the following deployment error:

matching subnets to zones: cannot use space "alpha" as deployment target: no subnets

$ juju spaces
Name Space ID Subnets
alpha 0
stagnum 1 192.168.3.0/24
undefined 2 192.168.122.0/24
$ juju show-space alpha
space:
  id: "0"
  name: alpha
  subnets: []
applications:
- calico
- ceph-csi
- ceph-fs
- ceph-mon
- ceph-osd
- containerd
- easyrsa
- etcd
- keepalived
- kubeapi-load-balancer
- kubernetes-control-plane
machine-count: 0

Where did the "alpha" space come from? And why is kubernetes-control-plane assigned to it despite spaces=stagnum constraint? I didn't have to touch anything space-related until now...

I went back and redeployed the cluster with unconfiened kubernetes-control-plane. Apparently all applications are assigned to "alpha" space also with this setup

$ juju spaces
Name Space ID Subnets
alpha 0
stagnum 1 192.168.3.0/24
undefined 2 192.168.122.0/24
$ juju show-space alpha
space:
  id: "0"
  name: alpha
  subnets: []
applications:
- calico
- ceph-fs
- ceph-mon
- ceph-osd
- containerd
- easyrsa
- etcd
- keepalived
- kubeapi-load-balancer
- kubernetes-control-plane
machine-count: 0
$ juju show-space stagnum
space:
  id: "1"
  name: stagnum
  subnets:
  - cidr: 192.168.3.0/24
    provider-id: "1"
    vlan-tag: 0
applications: []
machine-count: 18

Despite that, all machines in the model are getting IPs in 192.168.3.0/24 block:

Machine State Address Inst id Base AZ Message
0 started 192.168.3.51 stagnum1 ubuntu@22.04 default Deployed
0/lxd/0 started 192.168.3.49 juju-02d0c2-0-lxd-0 ubuntu@22.04 default Container started
0/lxd/1 started 192.168.3.64 juju-02d0c2-0-lxd-1 ubuntu@22.04 default Container started
0/lxd/2 started 192.168.3.27 juju-02d0c2-0-lxd-2 ubuntu@22.04 default Container started
0/lxd/3 started 192.168.3.39 juju-02d0c2-0-lxd-3 ubuntu@22.04 default Container started
0/lxd/4 started 192.168.3.37 juju-02d0c2-0-lxd-4 ubuntu@22.04 default Container started

For the next test, I've destroyed the model, recreated it and ran `juju model-config default-space=stagnum` and redeployed the model with kvm placement for kubernetes control plane.

$ juju show-space stagnum
space:
  id: "1"
  name: stagnum
  subnets:
  - cidr: 192.168.3.0/24
    provider-id: "1"
    vlan-tag: 0
applications:
- calico
- ceph-fs
- ceph-mon
- ceph-osd
- containerd
- easyrsa
- etcd
- keepalived
- kubeapi-load-balancer
- kubernetes-control-plane
machine-count: 3

$ juju show-application kubernetes-control-plane
kubernetes-control-plane:
  charm: kubernetes-control-plane
  base: ubuntu@22.04
  channel: 1.28/stable
  constraints:
    arch: amd64
    cores: 60
    mem: 245760
  principal: true
  exposed: false
  remote: false
  life: alive
  endpoint-bindings:
    "": stagnum
    aws: stagnum
    aws-iam: stagnum
    azure: stagnum
    ceph-client: stagnum
    ceph-storage: stagnum
    certificates: stagnum
    cni: stagnum
    container-runtime: stagnum
    coordinator: stagnum
    dns-provider: stagnum
    etcd: stagnum
    external-cloud-provider: stagnum
    gcp: stagnum
    grafana: stagnum
    ha: stagnum
    keystone-credentials: stagnum
    kube-api-endpoint: stagnum
    kube-control: stagnum
    kube-masters: stagnum
    loadbalancer: stagnum
    loadbalancer-external: stagnum
    loadbalancer-internal: stagnum
    nrpe-external-master: stagnum
    openstack: stagnum
    prometheus: stagnum
    vault-kv: stagnum
    vsphere: stagnum

This looks better but despite of that, deployment fails:

Machine State Address Inst id Base AZ Message
0 started 192.168.3.25 stagnum1 ubuntu@22.04 default Deployed
0/kvm/0 down pending ubuntu@22.04 no obvious space for container "0/kvm/0", host machine has spaces: "stagnum", "undefined"
0/lxd/0 down pending ubuntu@22.04 no obvious space for container "0/lxd/0", host machine has spaces: "stagnum", "undefined"

How can I nudge it to use the the right network?