this post was submitted on 24 Nov 2023
2 points (100.0% liked)

Self-Hosted Main

515 readers
1 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

For Example

We welcome posts that include suggestions for good self-hosted alternatives to popular online services, how they are better, or how they give back control of your data. Also include hints and tips for less technical readers.

Useful Lists

founded 1 year ago
MODERATORS
 

Hi,

I've written some microservices and am looking to deploy them. Since I am not very confident in cloud pricing (= too expensive right now), I am looking into ways of operating a very small server setup.

Lets say I have 5 services, one is the database, 3 should be run as jobs every minute, one service should be scaled based on load.

I am aware that basically described tasks that k8s or nomad would be very good at it. The issue with them is: While I am going to update the services, etc, I do not need a large cluster. I am very sure that I can start with one pod/node and maybe get a second one, if needed.

For this setup, k8s (or other flavors) is just overkill (learning and maintaining it). Nomad from hashicorp looks totally cool for that, but it is recommended to have 3 servers with crazy specs for each of them (doing quorum, leader follower, replication, etc.) Which is overkill when I plan to have 1 worker node in total :D

Nomad has `-dev` option running server and agent on the same node, but in production? I don't know. Nomads server also uses his ip and other things for identity. When they change, the server instance is basically dead and loses its data. That's why a quorum of 3 servers is recommended as a minimal prod setup.

Docker compose is not ideal, because I would like to update single containers without tearing everything down.

Also, cron for my periodic tasks is not part of docker or docker swarm except plugins, workarounds, or configuring a container running `cron` but then meddling with `flock`, etc.

I am aware that it actually does not sound like I need an orchestrator, but monitoring all the jobs and restarting a container manually sounds not optimal for me and maybe there is something out there, that helps me.

Since the tech community knows more than me, I would love to get some other opinions or point of views.

Thanks!

you are viewing a single comment's thread
view the rest of the comments
[–] Arioch5@alien.top 1 points 11 months ago (2 children)

Check out k0s https://k0sproject.io/ The k0sctl tool can manage and upgrade the environment very easily with one command. You still have to learn about kubernetes but this with argocd is pretty low maintenance.

[–] HosonZes@alien.top 1 points 11 months ago (1 children)

Do you know this project? From the first look I do not see a difference to microk8s.

What does it do differently?

[–] Arioch5@alien.top 1 points 11 months ago

Yea I know both microk8s and k0s. Today I use k0s, I used to use microk8s. My knowledge of it was very good and I'm about 2 years out of date FYI.

Microk8s was designed for development and arguably works ok for production. K0s is designed for production but built to be zero dependencies and easy to operate.

This shows up in:

  • Microk8s defaults to dqlite as it's data store, k0s uses the much more performant and tested etcd.
  • K0s does scale and load testing and advertise what to expect, microk8s doesn't.

Microk8s uses snaps by canonical, k0s is statically complied go it can run almost anywhere.

Both are backed by reputable open source companies. Canonical (Ubuntu) for microk8s and Mirantis (very active in OpenStack and k8s ecosystem) for k0s.

Both are fine, I find k0s more appropriate outside of Dev environments but choose what you like.