I am confused and cannot convince people who say “No” to Kubernet and “Docker Swarm”. If anyone can, please provide me with a detailed overview of what and why to use in AWS production?
Two of the three solutions you offer are platform agnostic, so we can talk about them without focusing on AWS.
I recommend you use Kubernetes and I will try to explain why below.
How can Docker Swarm better balance load and autoscale when I should already provide more than 1 virtual machines (created by docker-machine) as workers for my manager?
Docker Swarm is a relatively simple platform for orchestrating Docker applications with fairly simple logic. To implement node-based autoscaling, you must use some external tools (in AWS, for example, you can use the Autoscale group with some rules based on CPU utilization). And you will need to add some custom scripts to add and remove nodes from the Docker Swarm cluster. All this is possible, but you will need to develop it yourself.
Does Kubernetes Increase at Instance Level?
Yes Yes. Kubernetes can scale with cluster-autoscale daemon, which can run inside a cluster and automatically scale your instances up and down based on several metrics, including custom ones. You do not need to create any scripts, all the logic is already implemented, you just need to set the rules.
If Elastic Bean Stalk can manage my full Containerization along with AutoScaling and load balancing, then how is above 2 so much in demand and better to use?
Elastic Beanstalk is a solution for running applications inside AWS, but you will be limited by its functions. Yes, he can do so much for you, but if you need something ordinary, or you need to create a hybrid cloud solution - this is not an option.
Finally, I can tell you that with Kubernet you will receive:
- Tons of documentation and community experience.
- Auto-magic for almost everything from auto-scaling to A / B testing and auto-signing. Allows you to encrypt certificates for your services. You will spend a lot of time implementing all these functions in Docker Swarm or Elastic Beanstalk, and some of them may be almost impossible in other orchestras.
- Agnostics platform. You can go to any platform (even local) with minimal changes to your application configurations. Docker Swarm also works almost everywhere, but it is less functional.
- Many other things for planning, tasks, distribution of applications, different types of volumes and many others.
In addition, I can recommend some Kubernetes modules and applications that may be useful to you (and not only) AWS.
- Kube2iam is a tool that provides you the AWS IAM role by assigning it directly to your containers, not your instances.
- Autoscaling module .
- Cert-manager for generating LetsEncrypt SSL keys. It has Route53 integration for DNS calling.
- Nginx-ingress as an input controller that provides you with many features and the best Nginx experience.
- Kops . But you already know that.