Kubernetes is an open-source container management system widely used for running cloud applications. Originally developed by Google, Kubernetes is now managed by the Cloud Native Computing Foundation. Kubernetes is one of the fastest growing open source projects in the history of GitHub. Kubernetes is frequently abbreviated as k8s (the 8 signifies the 8 letters that are dropped from the abbreviation).
Kubernetes is well-suited for use in microservice architectures, as it provides a common configuration interface to much of the core infrastructure needed to deploy a microservice. Kubernetes automates how you deploy, scale, and manage your containerized applications.
What are some of the things Kubernetes can do?
- Schedule containers. Kubernetes aggregates the computing, network, and memory resources of multiple servers, and then allocates these resources as necessary for a specific container.
- Manage the operational lifecycle of containers. Kubernetes will create, manage, and destroy containers as appropriate. This includes monitoring and restarting non-responsive containers as well as scaling containers up and down as workload requirements change.
- Provide a common management and configuration interface. Kubernetes is designed for programmatic, DevOps-style configuration and management. All of its configuration files are in YAML, a human-readable and declarative file format that automates how your application gets to the desired end state.
Today’s cloud applications are highly sophisticated and distributed. Kubernetes provides a robust operating system for cloud applications, enabling them to be efficiently built and run. Without Kubernetes, DevOps teams would need to spend considerably more time engineering infrastructure to support building and running cloud applications.
Kubernetes is also modular and vendor agnostic. Cloud providers such as Amazon, Google, and Microsoft all support Kubernetes. Kubernetes can also be deployed directly in a private data center.
At its simplest level, Kubernetes turns a whole bunch of small computers into one big computer.