One can write huge books on java, both on the strengths and solutions, but also the weaknesses. For smaller companies and projects, it would probably be overkill to start with the java/JVM monolith, even today. Though java is the reason I jumped off the dev bandwagon, I can defend the language in hindsight, because it do solve several huge "unnecessary" problems other languages/runtimes simply don't address. The operational costs having been hidden away with expensive hardware upgrades.
In hindsight, I don't see huge obstacles that the same may be said about Kubernetes in the future. These low-level kinks will be worked out, and provide for the masses what they can't or won't achieve alone. The masses don't need Google-scale, but if they can get the 15-year old mature distributed systems tech almost for free, there are several reasons to standardize.
k8's might be too but I think the fact that containers are so portable it will be easy to migrate your application away from k8s if you want and to a new infrastructure. That's kind of the beauty of it.
This sort of assertion is oblivious to the fact that Kubernetes does solve a few basic problems that no other orchestration service solves, at least as easily.
I'm referring to problems like cluster autoscaling.
Until there's any alternative to Kubernetes that not only offers these features but it is also supported by service providers like AWS or Azure or GCP then Kubernetes is not a fad but the default tool of the trade.
When it comes to autoscaling, kubernetes has two levels of scaling - pods and nodes. This introduces pros and cons in itself.
Either your resources are under-utilized and you waste money or you scale as fast as regular scaling of your cloud provider.
I'll just point out that for example AWS ASG TargetTracking scaling policy blasts default Kubernetes HPA/CA scaling out of the water. It's more conservative while HPA is highly susceptible to pod thrashing.
Two-level based scaling introduces a lot of complexity, it gives more flexibility/power to the user, but only if that user has enough experience to not fall into multiple pitfalls it also creates(scaling).
I'm confident enough to say that ANY corporation that is not familiar with Kubernetes - decides to introduce it to it's technology stack will most likely shoot itself in the foot - also increasing the cost of infrastructure for their platform.
I've seen it too many times. Which then results in this corpo to hire some consultant that looks at what abomination their devops created to shake head and spend few months fixing their incompetence.
Doing Kubernetes the right way is hard.
I have 3 docker compose nodes that I manage manually. I will shortly need another one.
Seems like time for an orchestrator. If I squint swarm is a reasonable solution but k8s hysteria is sweeping me along..
Abstraction of some things on orchestration level does not mean there is no and will be no cloud specific code injected there. Actually there is a ton of this cloud specific code in there and when something stops working the way you want it to -> the solution often times is to write even more vendor locking code.
Instead of looking for "Cloud Agnostic" solution, find a solution that fits your use case the best. Using managed services if researched correctly can give many adventages. But like with everything that requires A LOT of knowledge about them and your domain.
That doesn't really count as it's a proprietary service controlled by a single service provider.
> I'm confident enough to say that ANY corporation that is not familiar with Kubernetes (...) also increasing the cost of infrastructure for their platform.
That assertion doesn't pass muster because a) you're assuming generalized and widespread inexperience and/or incompetence and b) you're assuming that not being able to learn how to use a service is a permanent state of affairs.
Meanwhile, back in the real world cluster autoscaling works well and does in fact let users shut down nodes they are not using which otherwise would have to be up and cost real money. Kubernetes is the reason why this feature is available to the general public. Until a better alternative appears, Kubernetes is by far the best and only option available to the whole industry.
It does, because in the same time the corporation could have used the tech stack they are familiar with, focusing on the product, which would directly improve their revenue. In most cases I've been consulting, the move to Kubernetes was strictly pushed by people who did not understand that for their use case it made absolutely no difference and only brought a lot of complexity to their table, which then turned into a year of two of consulting costs and even more operational work they previously had to maintain the new tech stack.
Lose-Lose situation.
> Kubernetes is by far the best and only option available to the whole industry.
No it isin't. And the sooner people understand that the better.
I like to compare Kubernetes to websphere.
It's easy to manage, and since 0.9.5 release they have resolved most of my issues.
Simply adding Traefik/Fabio gets you a lot of benefit as well.
We run it across multiple distributions as well and it "just works," which is not something I experienced with Kubernetes. It also works on Windows if you need that.
https://github.com/google/cadvisor
I think GP's point stands. I'd trust more Hashicorp than Google to help out on problems like these. They have a financial incentive to help you out and you can pay for support. Google does it just for corporate image and are known for terrible technical support for anything outside advertising customers.