
Official definition
Kubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications

For highly understanding what k8s is. It’s a tool to orchestrate your containers.
Notice: When you do not need k8s
-
When your application is NOT containerized. It’s too early to consider using k8s. Make your application architecture to fit 12 factor and can help you to develop modern software.
-
K8s is NOT a tool for small containerized application deployment. It will be over killed by using k8s and bring too much extra effort to the developer.
-
When the team member does NOT understanding what k8s is and how it works, do not use it. Because k8s is NOT out of box. It’s just a tool with huge mount of features and need the team to chose the desired part to use.
What does kubernetes offer
Kubernetes can cover the most common use cases when we talking about performance, distributed system, micro-service architecture, etc.
The main concept for using kubernetes is to declare the desired state of your application and kubernetes will help you to achieve it in distributed environment.
Here is the main part of kubernetes feature I think:
- Service discovery and load balance
- Automatic roll outs and roll backs
- Blue/Green deployment
- Canary release
- Rolling deployment
- Self healing and scaling