Weekly status for the week of 15th May to 21st May.
Introduction
This past week has seen a focus on getting the number of open issues in our issue tracker down ready for the forthcoming LXD 5.14 release.
Additionally @stgraber has added a video covering the LXD roadmap for late 2023 (the 23.10 cycle):
Job openings
Canonical Ltd. strengthens its investment into LXD and is looking at building multiple squads under the technical leadership of @stgraber.
As such, we are looking for first line managers (highly technical) and individual contributors to grow the team and pursue our efforts around scalability and clustering.
All positions are 100% remote with some travel for internal events and conferences.
For more info please see LXD related openings at Canonical Ltd (2022-2023)
LXD
Bug fixes:
- Fixed issue where setting
core.storage_buckets_address
to a managed bridge address meant that LXD would not be able to start on restart. This has been fixed by starting tertiary listeners (buckets and metrics) after managed networks have been started. - Fixed issue where
LXD_SECURITY_APPARMOR
environment variable was not being respected in all cases, which meant that fully disabling AppArmor was not possible. - Changed how
ovn
network/nic DHCPv4 works so that the previously allocated IP is reused (if available) when the instance is restarted. Previously if an instance with a lower IP was stopped after another instance was started, then if the later instance was restarted it would be allocated the IP previously assigned to the earlier instance. This was causing some issues with applications that rely on IPs staying the same across reboots (such as Juju). - Continued switch to the new
shared/ws
websocket package that is simpler and more Go idiomatic. - Fixed panics in
lxc storage info
command and make the URL parsing more resilient/flexible in order to support displaying storage buckets in the “Used By” section. - Fixed
lxc export <instance>
renaming exported file to compressed file extension when using the snap package. - Fixed issue that allowed (but ended in inconsistent DB and storage volumes) moving a storage volume to a project that didn’t have the
features.storage.volumes
feature enabled. Now this gives an error instead. - Cleanly stop and cleanup VM devices when the underlying QEMU process crashes by detecting unexpected QMP client disconnections and triggering the
onStop
hook that normally runs when a VM is stopped. This fixes issues where host-side processes, mounts and network interfaces were being left behind if a QEMU process unexpectedly ended (either due to a crash or killed due to memory shortages on the host). - Fixed custom volume snapshot expiry task to support clusters and remote storage volumes. Also merges custom volume scheduled snapshot task with expiry task to make the process more predictable and less contended. The new combined task runs the expiry part first to reduce risk of disk space shortages.
- Fixed contextual logging in the storage subsystem so that it logs the pool and pool driver type.
Distrobuilder
Improvements:
- Use armv7 for Alpine Linux.
YouTube videos
The LXD team is running a YouTube channel with live streams covering LXD releases and weekly videos on different aspects of LXD. You may want to give it a watch and/or subscribe for more content in the coming weeks.
https://www.youtube.com/lxd-videos
Contribute to LXD
Ever wanted to contribute to LXD but not sure where to start?
We’ve recently gone through some effort to properly tag issues suitable for new contributors on Github: Easy issues for new contributors
Upcoming events
- Nothing to report this week
Ongoing projects
The list below is feature or refactoring work which will span several weeks/months and can’t be tied directly to a single Github issue or pull request.
- Stable release work for LXC, LXCFS and LXD
Upstream changes
The items listed below are highlights of the work which happened upstream over the past week and which will be included in the next release.
LXD
- doc/getting started: add information about how to access the web UI
- Daemon: Start tertiary listeners (storage buckets and metrics) after managed network are initialised
- doc/instance options: clarify CPU limits
- doc: clarify TSIG key name generation for network zones
- Subprocess: Respect LXD_SECURITY_APPARMOR env var
- doc/bridge/resolved: clarify use of “~”
- lxd/network_zones: Use
zone
for consistency - doc/storage: add
lxc storage info
command - Doc: clean up FAQ
- Network: Add support for sticky DHCPv4 dynamic allocations for
ovn
NICs - storage: Use consistent route variable names
- Websocket: Continues move to shared/ws package
- lxc/storage: Rework cmdStorageInfo.Run() to be more resilient to used by resource URLs
- lxd: Improve errors for image record creation
- lxc/export: Fix export rename when run inside snap
- lxc: Fix project edit help text
- Websocket: Continue switch to shared/ws package
- Storage: Prevent moving volumes to projects that dont have features.storage.volumes enabled
- Doc: Updates bridge docker firewall fixes to include easier forwarding option
- VM: Trigger on stop device cleanup on QEMU crash
- Storage: Fix cluster and remote pool support for custom volume snapshot expiry
- Logging: Fix contextual logging in storage subsystem and simplify adding context to global logger
- Cluster: Don’t create a cluster heal operation every minute (and cause unnecessary logs)
LXC
LXCFS
- Nothing to report this week
Distrobuilder
LXD Charm
- Nothing to report this week
Distribution work
This section is used to track the work done in downstream Linux distributions to ship the latest LXC, LXD and LXCFS as well as work to get various software to work properly inside containers.
Ubuntu
- Nothing to report this week
Snap
- Nothing to report this week