← Back to context

Comment by nyrikki

4 hours ago

The tooling for that exists today in Linux, and it is fairly easy to use with podman etc.

K8s choices clouds that a little, but for vscode completions as an example, I have a pod, that systemd launches on request that starts it.

I have nginx receive the socket from systemd, and it communicates to llama.cpp through a socket on a shared volume. As nginx inherits the socket from systemd it does have internet access either.

If I need a new model I just download it to a shared volume.

Llama.cpp has now internet access at all, and is usable on an old 7700k + 1080ti.

People thinking that the k8s concept of a pod, with shared UTC, net, and IPC namespaces is all a pod can be confuses the issue.

The same unshare command that runc uses is very similar to how clone() drops the parent’s IPC etc…

I should probably spin up a blog on how to do this as I think it is the way forward even for long lived services.

The information is out there but scattered.

If it is something people would find useful please leave a comment.

This sounds very interesting to me. I'd read through that blog post, as I'm working on expanding my K8s skills - as you say knowledge is very scattered!

You are missing my point, maybe.

Plan9 had this by default in 1995, no third party tools required. You launch a program, it gets its own namespace, by default it is a child namespace of whatever namespace launched the program.

I should not have to read anything to have this. Operating systems should provide it by default. That is my point. We have settled for shitty operating systems because it’s easier (at first glance) to add stuff on top than it is to have an OS provide these things. It turns out this isn’t easier, and we’re just piling shit on top of shit because it seems like the easiest path forward.

Look how many lines of code are in Plan9 then look at how many lines of code are in Docker or Kubernetes. It is probably easier to write operating systems with features you desire than it is to write an application-level operating system like Kubernetes which provide those features on top of the operating system. And that is likely due to application-scope operating systems like Kubernetes needing to comply with the existing reality of the operating system they are running on, while an actual operating system which runs on hardware gets to define the reality that it provides to applications which run atop it.