Hacker News new | ask | show | jobs
by jiggawatts 1448 days ago
It deduplicates the kernel memory and system image base disk.

The minimum virtual machine size for a Windows server that is at all useful for anything is 4 GB of memory. Okay, okay, so you can technically boot it up on 2 GB and some roles will work fine, this will last only until some dingbat remotes to it with RDP with a 4K monitor and it starts swapping to disk.

Even if you use Server Core and block port 3389, it still needs a ton of memory just to start.

Running in a container it uses a few hundred megabytes.

Similarly, the minimum system disk size you can get away with is 32 GB if it is a discardable / ephemeral instance. You need 64 GB minimum if you ever intend to run Windows Update on it.

With containers, the unique parts of the image might be just a few hundred megabytes, even for complex apps.

My experience is with Windows, but from what I hear Linux VMs vs Linux containers have vaguely similar ratios.

So with containers, a single host can run dozens of applications, all sharing the same base disk, and all sharing the same OS kernel. The savings can be staggering.

At $dayjob, the admins are very much stuck in the dedicated VMs for every role mentality, and they're burning through enormous piles of taxpayer money to run them at literally 0.1% load.

Having said that, Kubernetes has its own problems. As you said, layering it on top of cloud VMs is a bit silly, and can easily result in the container running in a nested hypervisor at molasses speeds. Similarly, every single typical process changes dramatically: Deployment, updates, monitoring, auditing, etc...

Combine the above with the incompatible underlying cloud layer and things get really messy really quickly.

In my experience 90% of the world just isn't ready for the learning curve. Windows as an operating system isn't ready, certainly. Microsoft Azure isn't really ready either. Their AKS managed offering is still undergoing massive churn and seems to have more preview features than stable features. Even in the Linux world I hear more horror stories than success stories. It seems that everyone who says they love Kubernetes is using it on like... one machine. Come back and tell me how you feel after troubleshooting a failed upgrade on a cluster managing $100M of finance transactions.

What I would like to see is "native Kubernetes clouds" where the hosts are bare metal and there is no impedance mismatch between K8s and the cloud provider APIs because K8s is the API. Instead of the Azure portal or the AWS console you literally log into a Kubernetes console.

IMHO that would allow a true commoditisation of the public cloud and start to erode the near-duopoly of AWS and Azure.

1 comments

I think exokernels and isokernels solve many of these issues where containers are currently used, check the Ocaml community for examples.

They run on hardware.

Ultimately, there needs to be a singular scheduling system running on hardware and a singular HAL-like driver layer, and exo or iso kernels deliver just that, vs lxe containers provided by os services.

The sizes are also quite impressive.