Kubernetes support #933
Replies: 4 comments 3 replies
-
|
One of the things I've been thinking about is logging. I use Kubernetes, and all my applications log to standard logs, so in Rancher, Lens, kubectl, whatever I can easily check the logs. Additionally, I have Vector collect and push those logs to a log aggregator, so that I have a nice web UI with dropdowns to choose what service I want to view logs for, etc. With the current file logging, it can still be done, but I would need to setup a dedicated Vector instance to pull from the Pelican PV, do some custom labeling to fit with the other apps, and then aggregate it. I personally believe it'd make more sense if Pelican was built with Docker in mind, not necessarily Kubernetes, but if it's built to follow Docker standards, then it should be easy to integrate into a K8s solution. By this, I am specifically referring to again standard logging instead of files, and additionally, a more segmented approach, instead of a single monolithic container helps, as each process' logs will be divided up and labeled by the container's name automatically in K8s and Docker. I feel like these 2 aspects are the things that most greatly affect how suitable Pelican is for running on Kubernetes, and I've been wondering why the current approach is being taken instead? |
Beta Was this translation helpful? Give feedback.
-
|
We don't log to a file. We just use dockers standard logging feature which outputs to a file. The |
Beta Was this translation helpful? Give feedback.
-
|
Personally, the benefit for Kubernetes comes from the scalability and resiliency. The architecture that I'd like to see (take note that this is very idealized and extremely high level without consideration for the work involved to get there) would look something like this:
This is most of what I'm looking for out of Kubernetes support in Pelican. Nearly all of my infrastructure is on my Kubernetes cluster at this point, as well, so not having to have a whole separate box/VM just for Pelican. No project (at least none that are active) that I've found currently integrates both the panel and operator functionality together to give a really good, seamless Kubernetes solution. Hopefully that helps to outline at least one benefit to tighter integration with k8s. |
Beta Was this translation helpful? Give feedback.
-
|
The main benefit from Kubernetes that I want to take advantage is distributing the workload across the cluster, versus manually creating VMs as nodes and assigning multiple servers to one node. Plus the added benefit from longhorn managing the volumes across the cluster, it works with my already established rsync backup strategy. Claude Code has been a godsend, it has helped me transition from a traditional docker setup strategy on VMs to a distributed workload on 6 Raspberry PIs, and 2 AMD machines. Right now the only viable path to running Wings on K8s is Docker-in-Docker (DinD) — a DinD sidecar provides a private Docker daemon, and Wings connects to it via tcp://localhost:2375. This works, but it comes with significant costs:
Instead of Wings managing game containers via Docker, it would speak the Kubernetes API directly — spawning game servers as Pods (or Jobs) in a namespace, with:
Below is a full manifest set if useful — currently running 7 Wings instances (ARK SA, Satisfactory, Valheim, Enshrouded, 7D2D, RoR2, Moria) all on K8s with this pattern. It's stable, but the DinD privileged requirement and cold-start problem are the two things that would most benefit from a native solution. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
This thread is intended to discuss benefits & drawbacks of having it implemented.
Are there specific aspects of Kubernetes functionality you believe would be the most beneficial for the project to support?
What are the pain points or gaps that tighter integration with Kubernetes could solve for your use cases?
Beta Was this translation helpful? Give feedback.
All reactions