Google Kubernetes Engine supplies containerized application management powered by Kubernetes which includes Google Cloud services including load balancing, automatic scaling and upgrade, and other Google Cloud services.
Kubernetes is by far the best choice. More reliable and better developer experience. Mesos is prone to sporadic failures and not really designed to handle CI/CD-based deployments. Docker Cloud once shut down our entire cluster for "upgrades" without giving us any warning.
There's really no reason to ever use Mesos. We switched over to Kubernetes and it's been a breath of fresh air - better CD support, easy CLI for browsing logs, no mysterious dangling redeploys. If you're looking for a tool to manage a fleet of Docker containers on VMs, Kubernetes beats Mesos by a wide margin.
The Google Kubernetes Engine clusters are very good at being a managed cloud K8s platform - lots of documentation, features, and updates are available. It's also newbie-friendly - for both administrators and developers. Unfortunately, currently, it cannot reach true zero scale - thus, costs (rent for the service) are still involved even if you are barely using it. Thankfully, it's possible to have alternatives in Google Cloud:
Your own K8s cluster on Compute Engine VMs - you manage it completely; it will have access to a lot of Google Cloud services.
Cloud Run cluster - less documented but more flexible
Anthos clusters - you can use this service for a lot of types of K8s clusters - Google Kubernetes Engine, Cloud Run, on-prem, AWS, Azure
Mesos may have many frameworks. If you have Mesos installed on your servers, you may use it for many kinds of tasks. Today we're running only web applications but the idea is to install a different framework for big data soon.
Unreliable deployments that would fail for no good reason. Sometimes our Docker container would be "restarting" forever because Mesos thought it didn't have enough resources to start the container.
Impossibly slow UI. Built in React under the hood with a lot of bloatware backed in, so loading the Mesos UI on a slow internet connection was painful.
No real logging solution - it would stream "console.log()" output to the UI, but searching for logs wasn't really possible without downloading a huge file.
No built-in support for redeploying containers from a CI. We had to create a service whose whole job was to expose an HTTP endpoint that restarted a container, and then made Circle CI ping the endpoint whenever we wanted to redeploy.
Very good Kubernetes distribution with a reasonable total price. Integration with storage and load balancer for ingress and services speed up every process deployment.
Kubernetes is really great and their community is growing really fast (Google influence). We evaluated it in the beginning and it would fit for our web applications workload. We decided to proceed with Mesos because it has more potential. You may use a different framework for different kinds of tasks on Mesos. There is a Kubernetes framework for Mesos, by the way.
GKE spins up new nodes a LOT faster than AKS. GKE's auto scaler runs a lot smoother than AKS. GKE has a lot more Kubernetes features baked in natively.
When issues came up, we reached out to some folks at GCP and they seemed to be very prompt and attentive to our needs. They were always willing to help and provide additional details or recommendations or links to resources. This kind of support is very helpful as it allows us to navigate GKE with more confidence.
Positive: Allowed us to start and produce working software regardless of our experience level.
Positive: Integration with other Google Cloud services that we wanted to use anyway.
Negative: It's kinda clunky, and some scenarios seem Google Kubernetes Engine-specific instead of being more integrated with other Google Cloud services or the web UI.