Weekly status for the week of the 28th of June to the 4th of July.
Introduction
Moving our IRC presence to Libera Chat
Our IRC (live chat) channels have moved from Freenode over to Libera Chat.
You can now find us in #lxc
and #lxc-dev
on irc.libera.chat
.
A web chat client can be found here: Kiwi IRC
The LXD team is hiring
The LXD team at Canonical is currently looking for a Go software engineer to join our distributed team of engineers. We’re looking for candidates anywhere in Europe or the Americas!
All LXD positions are 100% remote with some travel for internal events and conferences.
LXD
New features:
- LXD will now try 3 times to start instances (with a 5s pause between each attempt) when auto starting them at LXD start up. This can be useful when the instance being launched depends on an external resource that is not available yet. If the instance still fails to start then a persistent warning is added that can be seen via
lxc warning ls
.
Improvements:
- Lifecycle events have been added for images, storage pools and cluster operations.
- Improved LXD’s handling of unresponsive VM QEMU processes. It now detects when QEMU is running but in an
internal-error
state and will show the VM instance as having anError
status. LXD will now also allow that QEMU process to be stopped by using alxc stop -f <instance>
force stop command. - When joining a new member to a cluster, if a join token is used, LXD now takes the new member’s name from the join token and does not request it from the user. This simplifies the join process.
- Improvements to the
bridged
NIC validation so that when usingparent
property with a LXD managed network, we now apply the same additional validation checks that we do when using thenetwork
property.
Bug fixes:
- When copying instances to a remote server, if the source server has multiple IP addresses then LXD will try and pull from each one of them in an attempt to find the one that is reachable from the other server. However if an error occurred during the migration process, this client-side retry mechanism would trigger a retry of the process using a different source IP. These unnecessary retry attempts would cause delay and additional load, and would sometimes cause the transfer to hang because the original operation had been ended. The client is now updated to differentiate an internal server error from a connection error and only retry on the latter scenario.
LXC
- The GPG keyserver in the
lxc-download
template has been changed fromhkp://pool.sks-keyservers.net
tohkp://keyserver.ubuntu.com
for reliability reasons. - The
lxc-init
file is now called as a library function rather than executed. - The
/sys/devices/virtual/net
path is now available as read/write inside the container. - A regression caused by Docker’s cgroup namespace emulation (in older versions) preventing LXC from starting has been fixed.
- Ensure that terminal output newlines are turned into newlines+carriage.
- Improves lxc-checkconfig so that it lists cgroup namespaces and renames confusing ns_cgroup entry.
Distrobuilder
Several CentOS and Oracle Linux fixes.
Dqlite (RAFT library)
During Jepsen testing an issue was found with the start_index not being set correctly when no closed segments were present. This has now been fixed.
Youtube channel
We’ve started a Youtube channel with live streams covering LXD releases and its use in the wider ecosystem.
You may want to give it a watch and/or subscribe for more content in the coming weeks.
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.
- Distrobuilder Windows support
- Virtual networks in LXD
- Various kernel work
- 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
- Makefile: Tweak quoting
- Add the mechanism of retrying instance autostart when autostart fails
- Image & Image Alias lifecycle events
- Storage pool lifecycle events
- Cluster and Cluster Member lifecycle events
- Move remaining iproute calls to ip package
- lxd/instance: Fix instance volume DB entry on copy
- lxd/main_init_interactive: only ask for server host name when no join token is provided
- Instances: Fixes potential crash in instancesRestart and improves logging
- Client: Only retry remote operation on a different URL if the last attempt failed to connect
- VM: Return Error status code if QEMU process running but QMP socket isn’t responsive
- VM: Allow force stop to kill QEMU process if in Error status
- NIC: Apply managed network validation checks when bridged NIC parent is set to a managed network
LXC
- remove_from_array() causes a crash
- lxc-download: Switch GPG server
- cgroups: verify that hierarchies are non-empty
- execute: don’t exec init, call it
- initutils: close dirfd in error path
- Improve read-only /sys with read-write /sys/devices/virtual/net
- cgroups: handle funky cgroup layouts
- terminal: ensure newlines are turned into newlines+carriage return fo…
- cmd/lxc-checkconfig: list cgroup namespaces and rename confusing ns_c…
LXCFS
- Nothing to report this week
Distrobuilder
- sources/oracle: Fix OL7 base URL
- Fix CentOS builds
- sources/centos: Check repo before disabling it
- sources/centos: Include more gpg keys
Dqlite (RAFT library)
Dqlite (database)
- Nothing to report this week
Dqlite (Go bindings)
- 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