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.
If your application is complex, if it's planet-scale, or if you need autoscaling, then Kubernetes is best suited. If your application is straightforward, you can opt for App Engine or Cloud Run. In many cases, you can prefer to run the cloud on GKE. But once you deploy on Kubernetes, you get the flexibility to try different things. But if you don't seek flexibility, it's not an option for you.
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.
Engine upgrade rollout strategy - well documented and configurable
Integration with other Google Cloud services like the Compute Engine, SaaS databases, and some cloud networking like Cloud Armor
Graphical interface for a lot of operations - either for a quick peek/overview or actual work done by administrators and/or developers (via the Google Cloud Console, for example)
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.