Kubernetes: How to expose a Pod/Deployment to the Nodes Network Ok, let's assume I've got the following theoretical setup:



I want to somehow assign IP-Addresses accessible by the PCs on the left to my pods. I can set routes etc. as I need since this setup is purely for practice. My goal is for every Pod to be able to expose any service (HTTP(s)/FTP/...) on any port. E.g.: :22, :22 for SSH

My first thought was to create ClusterIPs for every pod and somehow use ingress to assign IPs to those services, but as I later found out this is not what ingress is intended for.

My next step was to look at LoadBalancer-type services and this is where I'm currently at. My current impression is that they somehow only work with AWS/Google Cloud/Other providers and always expose those selected services to the internet, which is not my intention. I only want them to be accessible from my internal network.

Any input would be appreciated.
Some clarification first, 
the ClusterIP is only accessible inside the cluster this is not the right choice to solve your problem and the LoadBalancer depends on the integration with your network, real or virtual, to generate the correct resources and assign an IP address.

With that said, an easy way open a service port should be to use services of type NodePort it assigns a port directly on the machine, the same way you do when you open ports on a Linux machine, but with the difference that all the process is managed by Kubernetes. In that scenario, you only need to worry about the routes between the networks managed on your router.

You have more info about NodePort on the official Kubernetes documentation here

UPDATED

As per the last comments, for the use case, the use of NodePort should work and probably is a good option to use some DNS management like external-dns to not worry about how to setup the right IP.