Containers are a good way to bundle and run your applications and to ensure that there is no downtime in a production environment, you need to manage the containers that run the applications. As an example, if a container goes down, another container needs to start. The question is, would it not be easier if a system handles this behavior?
Here, Kubernetes come to the rescue! Kubernetes provides you with a framework taking care of scaling and failover for your application, providing deployment patterns to run distributed systems resiliently. A canary deployment for your system can easily be managed by Kubernetes, for example.
With Kubernetes you are provided with:
Service discovery and load balancing
Using the DNS name or using its own IP address, Kubernetes can expose a container. If traffic to a container is high, Kubernetes is able to load balance and distribute the network traffic so that the deployment is stable.
Kubernetes allows you to automatically mount a storage system of your choice, such as local storage and public cloud providers.
Automated rollouts and rollbacks
At a controlled rate, the desired state for your deployed containers can be described, and it can change the actual state to the desired state using Kubernetes. To create new containers for your deployment, remove existing containers and adopt all their resources to the new container; you can automate Kubernetes.
Automatic bin packing
To run containerized tasks, Kubernetes is provided with a cluster of nodes that it can use. To make the best use of your resources, Kubernetes can fit containers onto your nodes upon your telling Kubernetes how much CPU and memory (RAM) each container needs.
The restarting of containers that fail, replacement of containers, and killing of containers that do not respond to your user-defined health check is done by Kubernetes, and until they are ready to serve, it does not advertise them to clients.
Management of secret and configuration
Kubernetes can be used to store and manage sensitive information, such as passwords, OAuth tokens, and SSH keys. You can deploy and update secrets and application configuration without rebuilding your container images and without exposing secrets in your stack configuration.
Hope this was helpful.