OpenNebula / one

The open source Cloud & Edge Computing Platform bringing real freedom to your Enterprise Cloud 🚀
http://opennebula.io
Apache License 2.0
1.19k stars 472 forks source link

Installation of `opennebula-node-firecracker` removes `opennebula-node-kvm` on same host #6209

Closed Franco-Sparrow closed 1 year ago

Franco-Sparrow commented 1 year ago

Hi team. I might need your help on this. I dont know if this can be done or not, is not clear on the official documentation. Depending on this, it could be a bug or not.

Description

Can not install opennebula-node-firecracker on a host, where it has already installed opennebula-node-kvm. This was tested on a single node OpenNebula cluster in Ubuntu 22.04 (but it happened the same in Ubuntu 20.04). The installation of the opennebula-node-firecracker were done based on the official documentation:

To Reproduce

On the node

This a node where you already have installed opennebula-node-kvm and is a functional node where are VMs running inside:

onevm list

  ID USER     GROUP    NAME                                                            STAT  CPU     MEM HOST                                             TIME
  40 oneadmin oneadmin testrestore                                                     runn    1    128M ON-DEV-N1-kvm                                0d 00h58
  39 oneadmin oneadmin testnfs                                                         runn    1    128M ON-DEV-N1-kvm                                6d 20h21
  37 oneadmin oneadmin test-img84-inc1                                                 poff    1    128M ON-DEV-N1-kvm                                6d 22h56
  36 oneadmin oneadmin test                                                            poff    1    128M ON-DEV-N1-kvm                                7d 00h32
  35 oneadmin oneadmin alpine                                                          poff    1    128M ON-DEV-N1-kvm                                7d 02h48

Installing opennebula-node-firecracker on same host:

apt install opennebula-node-firecracker

This action will remove opennebula-node-firecracker

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libflashrom1 libftdi1-2 libnbd-bin libnbd0 libtpms0 libvirt-clients libvirt-daemon libvirt-daemon-config-network libvirt-daemon-config-nwfilter
  libvirt-daemon-driver-qemu libvirt-daemon-system libvirt-daemon-system-systemd libvirt0 libxml2-utils libyajl2 mdevctl swtpm swtpm-tools
Use 'apt autoremove' to remove them.
The following additional packages will be installed:
  libarchive-tools libvncserver1
The following packages will be REMOVED:
  opennebula-node-kvm
The following NEW packages will be installed:
  libarchive-tools libvncserver1 opennebula-node-firecracker
0 upgraded, 3 newly installed, 1 to remove and 22 not upgraded.
Need to get 222 kB of archives.
After this operation, 754 kB of additional disk space will be used.
Do you want to continue? [Y/n] y

These are the opennebula packages installed now:

dpkg -l | grep opennebula

ii  opennebula-common                     6.6.1-1                                 all          Common OpenNebula package shared by various components (Enterprise Edition)
ii  opennebula-common-onecfg              6.6.1-1                                 all          Helpers for OpenNebula onecfg (Enterprise Edition)
ii  opennebula-node-firecracker           6.6.1-1                                 amd64        Services for OpenNebula Firecracker node (Enterprise Edition)
rc  opennebula-node-kvm                   6.6.1-1                                 all          Services for OpenNebula KVM node (Enterprise Edition)
ii  opennebula-prometheus-kvm             6.6.1-1                                 amd64        OpenNebula KVM Exporters
ii  opennebula-rubygems                   6.6.1-1                                 amd64        Ruby dependencies for OpenNebula (Enterprise Edition)

As expected, it removed the binary opennebula-node-kvm.

On the orchestrator

Create the firecracker host:

onehost create ON-DEV-N1-fc -i firecracker -v firecracker

Listing the opennebula hosts:

onehost list

  ID NAME                                                                                            CLUSTER    TVM      ALLOCATED_CPU      ALLOCATED_MEM STAT
   1 ON-DEV-N1-fc                                                                                    KVM          0      0 / 1600 (0%)    0K / 35.3G (0%) on
   0 ON-DEV-N1-kvm                                                                                   KVM          5   500 / 1600 (31%)  640M / 35.3G (1%) on

After tried to create a VM on the KVM host, it failed, as expected, due the missing opennebula-node-kvm binary

cat /var/log/one/42.log

Wed May 17 12:23:38 2023 [Z0][VM][I]: New state is ACTIVE
Wed May 17 12:23:38 2023 [Z0][VM][I]: New LCM state is PROLOG
Wed May 17 12:23:40 2023 [Z0][VM][I]: New LCM state is BOOT
Wed May 17 12:23:40 2023 [Z0][VMM][I]: Generating deployment file: /var/lib/one/vms/42/deployment.0
Wed May 17 12:23:40 2023 [Z0][VMM][I]: Successfully execute transfer manager driver operation: tm_context.
Wed May 17 12:23:40 2023 [Z0][VMM][I]: Successfully execute network driver operation: pre.
Wed May 17 12:23:41 2023 [Z0][VMM][I]: ExitCode: 0
Wed May 17 12:23:41 2023 [Z0][VMM][I]: Successfully execute virtualization driver operation: /bin/mkdir -p.
Wed May 17 12:23:41 2023 [Z0][VMM][I]: ExitCode: 0
Wed May 17 12:23:41 2023 [Z0][VMM][I]: Successfully execute virtualization driver operation: /bin/cat - >/var/lib/one//datastores/0/42/vm.xml.
Wed May 17 12:23:41 2023 [Z0][VMM][I]: ExitCode: 0
Wed May 17 12:23:41 2023 [Z0][VMM][I]: Successfully execute virtualization driver operation: /bin/cat - >/var/lib/one//datastores/0/42/ds.xml.
Wed May 17 12:23:41 2023 [Z0][VMM][I]: Command execution fail (exit code: 255): cat << 'EOT' | /var/tmp/one/vmm/kvm/deploy '/var/lib/one//datastores/0/42/deployment.0' 'ON-DEV-N1-kvm' 42 ON-DEV-N1-kvm
Wed May 17 12:23:41 2023 [Z0][VMM][I]: error: Failed to create domain from /var/lib/one//datastores/0/42/deployment.0
Wed May 17 12:23:41 2023 [Z0][VMM][I]: error: Cannot check QEMU binary /usr/bin/qemu-kvm-one: No such file or directory
Wed May 17 12:23:41 2023 [Z0][VMM][I]: Could not create domain from /var/lib/one//datastores/0/42/deployment.0
Wed May 17 12:23:41 2023 [Z0][VMM][I]: ExitCode: 255
Wed May 17 12:23:41 2023 [Z0][VMM][I]: Successfully execute network driver operation: clean.
Wed May 17 12:23:41 2023 [Z0][VMM][I]: Failed to execute virtualization driver operation: deploy.
Wed May 17 12:23:41 2023 [Z0][VMM][E]: DEPLOY: error: Failed to create domain from /var/lib/one//datastores/0/42/deployment.0 error: Cannot check QEMU binary /usr/bin/qemu-kvm-one: No such file or directory Could not create domain from /var/lib/one//datastores/0/42/deployment.0 ExitCode: 255
Wed May 17 12:23:41 2023 [Z0][VM][I]: New LCM state is BOOT_FAILURE

Trying to reinstall opennebula-node-kvm:

apt install opennebula-node-kvm

This action will remove opennebula-node-firecracker:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libarchive-tools libflashrom1 libftdi1-2 libvncserver1
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  opennebula-node-firecracker
The following NEW packages will be installed:
  opennebula-node-kvm
0 upgraded, 1 newly installed, 1 to remove and 22 not upgraded.
Need to get 11.9 kB of archives.
After this operation, 194 kB disk space will be freed.
Do you want to continue? [Y/n] y

Listing the opennebula packages:

dpkg -l | grep opennebula

ii  opennebula-common                     6.6.1-1                                 all          Common OpenNebula package shared by various components (Enterprise Edition)
ii  opennebula-common-onecfg              6.6.1-1                                 all          Helpers for OpenNebula onecfg (Enterprise Edition)
rc  opennebula-node-firecracker           6.6.1-1                                 amd64        Services for OpenNebula Firecracker node (Enterprise Edition)
ii  opennebula-node-kvm                   6.6.1-1                                 all          Services for OpenNebula KVM node (Enterprise Edition)
ii  opennebula-prometheus-kvm             6.6.1-1                                 amd64        OpenNebula KVM Exporters
ii  opennebula-rubygems                   6.6.1-1                                 amd64        Ruby dependencies for OpenNebula (Enterprise Edition)

Expected behavior

Installation of opennebula-node-firecracker without remove opennebula-node-kvm binary and viceversa.

Details

Additional context Add any other context about the problem here.

Progress Status

dann1 commented 1 year ago

It's the intended behavior. It should be reworked once this is done. Allowing hypervisor node packages to not mutually exclude each other when compatible.