0

I am trying to learn k8s, and 1 question always coming as to why we need GKE, aks, or EKS.

In the cloud, Can we do container orchestration without the above services means can we have compute instances like ec2/VM and install k8s (open source project) on those nodes, which means make our own k8s cluster? If yes, How we can add more nodes automatically to a cluster if any node goes down? where we can challenges if we do that way? what features do we miss in this approach?

If no, why people compare k8s vs EKS vs aks vs gke as k8s should not be part of that?

At few places I found, people said it's like plain Hadoop and Cloudera Hadoop (fully manages Hadoop cluster which makes life easy and adds value to the table).

I know all these services make job lot easier but nowhere I find that this is also one way of doing though it is very very complex setting up your own cluster with multiple nodes.

Any good content where I can find a reason why not only k8s. At many places, people compared k8s with EKS,gke and AKS and shown k8s is best but nowhere I find in use case k8s is implemented without these services. Also at many places, I see k8s is not good but still it's sidely used everywhere why so and how it is better than eks,gke and aks?

anant
  • 3
  • 1

1 Answers1

1

AKS, EKS and GKE are so called managed kubernetes solutions. Their goal and functionality is basically the same. There are of course some differences, especially on how such managed kubernetes cluster can be integrated with the rest of the specific cloud platform but all the vendors do their best to make sure it is in no way inferior to the competition.

why AKS,EKS,GKE better than k8s .can we say k8s architecture is base of these 3. How they leverage each other?

Are they ? I wouldn't say they are better, they are simply different. The ultimate evaluation what is actually better depends entirely on your specific needs and requirements.

Yes, those 3 solutions are entirely based on open source kubernetes with some additional modifications and improvements developed separately by each cloud provider. You can read more about kubernetes history in this Wikipedia article. In short, it was originally developed by Google based on their experiences with their internal system for container orchestration called Borg and subsequently released as an open-source technology:

Kubernetes v1.0 was released on July 21, 2015.[13] Along with the Kubernetes v1.0 release, Google partnered with the Linux Foundation to form the Cloud Native Computing Foundation (CNCF)[14] and offered Kubernetes as a seed technology.

To set up your kubernetes cluster on your own you have tools like kubeadm which simplifies the whole process but still gives you full control of your kubernetes environment. But it has both advantages and disatvantages. From one hand you have complete control over your master node, but from the other you are the one who is fully responsible for administering such environment and if something goes wrong e.g. with your production cluster, you are the one who needs to fix it.

Some users need even more granular level of control both over the cluster setup process as well as its administration. You've probably heard of the approach to setting up your kubernetes cluster 100% manually. It's called kubernetes the hard way. If you went through it at least once, you probably know how complicated and tedious process it can be.

Unlike the two above, managed kubernetes environments totally take this burden off you and the working kubernetes cluster that doesn't require any further configuration can be set up completely automatically in a few minutes.

Advantages of such solution ? Well, with no doubts there are many. Less administration effort, less energy and time you need to dedicate to set up and manage kubernetes cluster itself and you can focus mainly on deploying and managing the workload. Every benefit involves however some trade-offs and also here by choosing one of managed kubernetes solutions you give up full control of your environment. Keep in mind that GKE, AKS and AKS don't give you access to master node. So if you want to reconfigure your kube-apiserver or other element of the cluster by running it with some completely different flag, you're not allowed to do that. In exchange you don't care if the whole master node goes down as it is your cloud provider's responsibility to manage it properly for you.

So as I've already said, it entirely depends on your particular needs and expectations. You can ask the same way: "Why to use the cloud, IaaS, PaaS, SaaS if we can manage our infrastructure on our own ? There are so many datacenters that allow you to place your physical servers, so why to bother with some cloud solutions ?" - But you would probably agree that using cloud has many advantages. It provides unprecedented level of scalability and elasticity and high availability, to name just a few but you probably know that this list is very long.

In the cloud, Can we do container orchestration without the above services means can we have compute instances like ec2/VM and install k8s (open source project) on those nodes, which means make our own k8s cluster?

Of course w can. You can set up your own kubernetes environment with full access to master node on GCP Compute Engine VMs but as I said, it requires more administration effort. You can set up your kubernetes cluster on virtual machines in the cloud, the same way as you would do this on-prem.

If yes, How we can add more nodes automatically to a cluster if any node goes down?

Well, you can always develop your own solution to automate this process, but in generall if you set up your kubernetes cluster manually, the answer is: you can't. This is also one great advantage of managed kubernetes solutions as pure open source kubernetes simply doesn't havy such features and won't automatically spawn an additional node when one of them goes down. Actually it isn't even designed for such purpuse and it works on a different level. It's about managing containers running our workload, not about managing cloud infrastructure.

Take a look at this article where you have a basic overview of Google Kubernetes Engine including the advantages of GKE over pure open source kubernetes:

Kubernetes on Google Cloud

When you run a GKE cluster, you also gain the benefit of advanced cluster management features that Google Cloud provides. These include:

As to:

If no, why people compare k8s vs EKS vs aks vs gke as k8s should not be part of that?

For comparing EKS vs AKS vs GKE there is a simple reason. Behind every of them stands another big player and they are simply competitive solutions attempting to be one step ahead from the competition, which basically is also very positive as it additionally drives their intensive development.

Comparing each of them separately with open source k8s also makes a perfect sense as for some uses it might be better to consider setting up our own k8s cluster from scratch and have very granular control over each detail e.g. setting the specific flags kube-apiserver or kube-scheduler is started with etc.

At few places I found, people said it's like plain Hadoop and Cloudera Hadoop (fully manages Hadoop cluster which makes life easy and adds value to the table).

yes, this is a very accurate comparison. Keep in mind that setting up a complex cluster, consisting of many elements is much more complicated than installing a simple http or database server (but you also can find hosting providers that make your life easier and offer fully managed solutions). Even if they consist of a few replicas, usually their setup requires less time and energy than setting up a cluster consisting of many related elements, where one heavily depends on another. If you take a closer look at those elements in kubernetes you'll find out that it's not such a homogenous environment and although when you set everything up automatically it may seem as such, in fact it isn't.

I hope this shed some light on your understanding of kubernetes and in particular the sense of using kubernetes managed solutions.

mario
  • 525
  • 3
  • 8