Readit News logoReadit News
rascul · a month ago
A little bit of context about where Incus came from:

https://lwn.net/Articles/940684/

Semaphor · a month ago
So it looks like a Proxmox alternative, this [0] goes into some reasons to switch. Main selling point seems to be fully OSS and no enterprise version.

[0]: https://tadeubento.com/2024/replace-proxmox-with-incus-lxd/

snapplebobapple · a month ago
why would they think no enterprise version is a selling point? I can't learn stuff at work and apply it at home easily with this product. if anything proxmox needs a more enterprise option with faster support and it would be a better product for me. The caveat is there needs to be a credible way to keep the opensource open and available, which proxmox has done so far.
hardwaresofton · a month ago
It’s more like a Kubernetes alternative
moondev · a month ago
Proxmox feels like a more apt comparison, as they both act like a controlplane for KVM virtual-machines and LXC containers across one or multiple hosts.

If you are interested in running kubernetes on top of incus, that is your kubernetes cluster nodes will be made up of KVM or LXC instances - I highly recommend the cluster-api provider incus https://github.com/lxc/cluster-api-provider-incus

This provider is really well done and maintained, including ClusterClass support and array of pre-built machine images for both KVM and LXC. It also supports pivoting the mgmt cluster on to a workload cluster, enabling the mgmt cluster to upgrade itself which is really cool.

I was surprised to come across this provider by chance as for some reason it's not listed on the CAPI documentation provider list https://cluster-api.sigs.k8s.io/reference/providers

loloquwowndueo · a month ago
Not really, Kubernetes does a lot of different things that are out of scope for incus or lxd or docker compose for that matter or any hypervisor or …
danofsteel32 · a month ago
Incus is great when developing ansible playbooks. The main benefit for me over docker/podman is systemd works out of the box in incus containers.
ssnepenthe · a month ago
I have never actually tested it, but my understanding is that systemd also works out of the box inside of podman containers: https://docs.podman.io/en/latest/markdown/podman-run.1.html#...
mekster · a month ago
Not to mention the easy to use web UI.

Deleted Comment

anonfordays · a month ago
What makes it better than Vagrant for this use-case?
fuzzy2 · a month ago
Doesn't Vagrant spin up full VMs? Incus/LXD/LXC is about system containers. So like Docker, but with a full distro including init system running inside the container. They are much faster to spin up and have the best resource sharing possible.
goku12 · a month ago
Vagrant is not the right comparison against Incus for this use case. Vagrant is used to spin up VM or system container instances that are configured for software development and testing. But vagrant doesn't create those VMs or containers by itself. Instead, it depends on virtualization/container providers like VMware, Virtualbox, libvirt or lxc. In fact, you could create a provider plugin for vagrant to use Incus as its container/VM back end. (I couldn't find any, though.)
mdaniel · a month ago
I first learned about this because colima supports it: https://github.com/abiosoft/colima#incus
actinium226 · a month ago
I went through the online tutorial, but I'm not really seeing how it's different from docker?
skydhash · a month ago
Instead of ephemeral containers, you have instances that are like VM (and incus can manage VM via qemu), so pretty much everything you would use a VM for, but if you do not need the kernel separation. It's more similar to FreeBSD jails than to docker.
CoolCold · a month ago
if your question is genuine, then the simple answer would be full system inside container of LXD/Incus (I prefer to use term VE for Virtual Environment to distinguish from barebone containers of Docker style).

The full system, means, all your standard stuff works in expected way - crons, systemd units, sshd, multiple users, your regular backup solutions and so on. As well, that "system" can be dumped/exported/backuped/snapshotted as a whole - very much similar like you do with your vSphere/Qemu or whatever you use in your datacenters as hypervisor.

Foreseeing the question - yep, you can run Docker inside LXD/Incus VEs. In practical terms, that makes much simple when you need to give some dev team (who are of course not anywhere known to do sane things) access to environment with Docker access (which in 99% cases means that host's root level access is exposed).

Levitating · a month ago
It's a difference between system containers and application containers.

LXC containers used in incus run their own init, they act more like a VM.

However incus can also execute actual VMs via libvirt and since recently even OCI containers like docker.

tcfhgj · a month ago
The only tool I found which allows to easily spin up pre-configured VMs without any gui hassle
gavinray · a month ago
Can someone explain the usecase for this?

Is this for people who want to run their own cloud provider, or that need to manage the infrastructure of org-owned VM's?

When would you use this over k8s or serverless container runtimes like Fargate/Cloudrun?

goku12 · a month ago
> Can someone explain the usecase for this?

Use cases are almost the same as Proxmox. You can orchestrate system containers or VMs. Proxmox runs lxc container images, while incus is built on top of lxc and has its own container images.

System vs Application containers: Both share virtualized kernels. Application containers usually run only a single application like web app (eg: OCI containers). System containers are more like VMs with systemd and multiple apps managed by it. Note: This differentiation is often ambiguous.

> Is this for people who want to run their own cloud provider, or that need to manage the infrastructure of org-owned VM's?

Yes, you could build a private cloud with it.

> When would you use this over k8s or serverless container runtimes like Fargate/Cloudrun?

You would use it when you need traditional application setups inside VMs or system containers, instead of containerized microservices.

I actually use Incus containers as host nodes for testing full fledged multinode K8s setups.

throwaway2056 · a month ago
I know some webhosting provider that used one VM for every user. Now they moved to using this. Firstly low resource usage. If one uses ZFS or btrfs then one can save storage as in common bits are not duplicated across system containers. Note this is a system container - not traditional container. This one can be rebooted to get the previous state. It is not ephemeral.
pxc · a month ago
System container tech like Incus powers efficient Linux virtualization environments for developers, so that you can have only one VM but many "machines". OrbStack machines on macOS work like this, and the way WSL works is similar (one VM and one Linux kernel, many guests sharing that kernel via system containers).
CoolCold · a month ago
Just in case - I'm using LXD inside my WSL and it working great. BTRFS backed storage via loopfile, saves $$$.

For others, why it may be useful in regular sysadmin job:

* say doing Ansible scripting against LOCAL network is hell amount of time faster than against 300+ ms remote machines

  * note that because you can use VE snapshots, it's very easy to ensure your playbook works fine without guessing what have you modified when testing things - just do rollback to "clean" state and start over
* creating test MariaDB 3 nodes cluster - easy peasy

* multiple distros available - need to debug Haproxy from say Rocky 8 linux? Check!

gavinray · a month ago
Thanks -- though I'm not sure I fully grok how this is different than something like Firecracker?
Levitating · a month ago
There's no particular usecase, though I do know of a company whose entire infrastructure is maintained within incus.

I personally use it mostly for deploying a bunch of system containers and some OCI containers.

But anyone who uses LXC, LXD, docker, libvirt, qemu etc. could potentially be interested in Incus.

Incus is just an LXD fork btw, developed by Stephane Graber.

clvx · a month ago
Who also developed LXD and contributed to LXC. I wouldn’t say it’s just a fork but a continuation of the project without Canonical.
63stack · a month ago
How do you handle updating the machine that Incus itself runs on? I imagine you have to be super careful not to introduce any breakage, because then all the VMs/containers go down.

What about kernel updates that require reboots? I have heard of ksplice/kexec, but I have never seen them used anywhere.

CoolCold · a month ago
I'm not quite sure what's your question here? Very much similar to any other system which needs to reboot and you getting ready to these reboots in advance.

To some extent, of course things like vSphere/Virtuozzo and even LXD/Incus, and even simple Qemu/Virsh systems can do live migration of VMs, so you may care less on preparing things inside VMs to be fault taulerant, but to some extent.

I.e. if your team do run PostgreSQL, your run it in cluster with Patroni and VIPs and all that lovely industry standard magic and tell dev teams to use that VIP as entry point (in reality things bit more complicated with Haproxy/Pgbouncer on top, but enough to express the idea).

63stack · a month ago
I missed the part that Incus supports clustering, for some reason I thought it's single node only.
dsr_ · a month ago
As with any such system, you need a spare box. Upgrade the spare, move the clients to it, upgrade the original.
loloquwowndueo · a month ago
But then the clients have downtime while they’re being moved.