Live data from Hacker News

Uncloud - Tool for deploying containerised apps across servers without k8s

uncloud.run

61–70 of 189 posts

Re: Uncloud - Tool for deploying containerised apps across servers without k8s

#61

Hey, creator here. Thanks for sharing this! Uncloud[0] is a container orchestrator without a control plane. Think multi-machine Docker Compose with automatic WireGuard mesh, service discovery, and HTTPS via Caddy. Each machine just keeps a p2p-synced copy of cluster state (using Fly.io's Corrosion), so there's no quorum to maintain. I’m building Uncloud after years of managing Kubernetes in small envs and at a unicor…

This is a cool tool, I like the idea. But the way `uc machine init` works under the hood is really scary. Lot's of `curl | bash` run as root.

While I would love to test this tool, this is not something I would run on any machine :/

Re: Uncloud - Tool for deploying containerised apps across servers without k8s

#62

If not K8S, why not Nomad ( https://github.com/hashicorp/nomad )?

Nomad still has a tangible learning curve, which (in my very biased opinion) is almost non-existent with Uncloud assuming the user has already heard about Docker and Compose.

Re: Uncloud - Tool for deploying containerised apps across servers without k8s

#63

Having spent most of my career in kubernetes (usually managed by cloud), I always wonder when I see things like this, what is the use case or benefit of not having a control plane? To me, the control plane is the primary feature of kubernetes and one I would not want to go without. I know this describes operational overhead as a reason, but how it relates to the control plane is not clear to me. even managing a few h…

Kubernetes is not only an orchestrator but a scheduler.

Is a way to run arbitrary processes on a bunch of servers.

But what if your processes are known beforehand? Than you don't need a scheduler, nor an orchestrator.

If it's just your web app with two containers and nothing more?

Re: Uncloud - Tool for deploying containerised apps across servers without k8s

#64
post #3

Earlier quoted context omitted.

How's this similar to and different from Kamal? https://kamal-deploy.org/

I took some inspiration from Kamal, e.g. the imperative model but kamal is more a deployment tool. In addition to deployments, uncloud handles clustering - connects machines and containers together. Service containers can discover other services via internal DNS and communicate directly over the secure overlay network without opening any ports on the hosts. As far as I know kamal doesn’t provide an easy way for servi…

This is neat, regarding clustering - can this work with distributed erlang/elixir?

Re: Uncloud - Tool for deploying containerised apps across servers without k8s

#65
post #31

Earlier quoted context omitted.

Not rude at all. The benefit is a much simpler model where you simply connect machines in a network where every machine is equal. You can add more, remove some. No need to worry about an HA 3-node centralised “cluster brain”. There isn’t one. It’s a similar experience when a cloud provider manages the control plane for you. But you have to worry about the availability when you host everything yourself. Losing etcd qu…

k3s uses sqlite, so not etcd.

It can use sqlite (single master), or for cluster it can use pg, or mysql, but etcd by default

Re: Uncloud - Tool for deploying containerised apps across servers without k8s

#66
post #27

Hey, creator here. Thanks for sharing this! Uncloud[0] is a container orchestrator without a control plane. Think multi-machine Docker Compose with automatic WireGuard mesh, service discovery, and HTTPS via Caddy. Each machine just keeps a p2p-synced copy of cluster state (using Fly.io's Corrosion), so there's no quorum to maintain. I’m building Uncloud after years of managing Kubernetes in small envs and at a unicor…

Awesome tool! Does it provide some basic features that you would get from running a control plane. Like rescheduling automatically a container on another server if a server is down? Deploying on the less filled server first if you have set limits in your containers?

Thank you! That's actually the trade off.

There is no automatic rescheduling in uncloud by design. At least for now. We will see how far we can get without it.

If you want your service to tolerate a host going down, you should deploy multiple replicas for that service on multiple machines in advance. 'uc scale' command can be used to run more replicas for an already deployed service.

Longer term, I'm thinking we can have a concept of primary/standby replicas for services that can only have one running replica, e.g. databases. Something similar to how Fly.io does this: https://fly.io/docs/apps/app-availability/#standby-machines-...

Regarding deploying on the less filled machine first is doable but not supported right now. By default, it picks the first machine randomly and tries to distributes replicas evenly among all available machines. You can also manually specify what target machine(s) each service should run on in your Compose file.

I want to avoid recreating the complexity with placement constraints, (anti-)affinity, etc. that makes K8s hard to reason about. There is a huge class of apps that need more or less static infra, manual placement, and a certain level of redundancy. That's what I'm targeting with Uncloud.

Re: Uncloud - Tool for deploying containerised apps across servers without k8s

#67
post #61

Hey, creator here. Thanks for sharing this! Uncloud[0] is a container orchestrator without a control plane. Think multi-machine Docker Compose with automatic WireGuard mesh, service discovery, and HTTPS via Caddy. Each machine just keeps a p2p-synced copy of cluster state (using Fly.io's Corrosion), so there's no quorum to maintain. I’m building Uncloud after years of managing Kubernetes in small envs and at a unicor…

This is a cool tool, I like the idea. But the way `uc machine init` works under the hood is really scary. Lot's of `curl | bash` run as root. While I would love to test this tool, this is not something I would run on any machine :/

+1 on this

I wanted to try it out but was put off by this[0]. It’s just straight up curl | bash as root from raw.githubusercontent.com.

If this is the install process for a server (and not just for the CLI) I don’t want to think about security in general for the product.

Sorry, I really wanted to like this, but pass.

[0] https://github.com/psviderski/uncloud/blob/ebd4622592bcecedb...

Re: Uncloud - Tool for deploying containerised apps across servers without k8s

#68
post #65
post #31

Earlier quoted context omitted.

k3s uses sqlite, so not etcd.

It can use sqlite (single master), or for cluster it can use pg, or mysql, but etcd by default

No, it's not. Read the docs[1] - sqlite is the default.

"Lightweight datastore based on sqlite3 as the default storage backend. etcd3, MySQL, and Postgres are also available."

[1]https://docs.k3s.io/

Re: Uncloud - Tool for deploying containerised apps across servers without k8s

#70
post #61

Hey, creator here. Thanks for sharing this! Uncloud[0] is a container orchestrator without a control plane. Think multi-machine Docker Compose with automatic WireGuard mesh, service discovery, and HTTPS via Caddy. Each machine just keeps a p2p-synced copy of cluster state (using Fly.io's Corrosion), so there's no quorum to maintain. I’m building Uncloud after years of managing Kubernetes in small envs and at a unicor…

This is a cool tool, I like the idea. But the way `uc machine init` works under the hood is really scary. Lot's of `curl | bash` run as root. While I would love to test this tool, this is not something I would run on any machine :/

Totally valid concern. That was a shortcut to iterate quickly in early development. It’s time to do it properly now. Appreciate the feedback. This is exactly the kind of thing I need to hear before more people try it.
Post reply on HN