Skip to content
bgrant0607 edited this page Jan 16, 2015 · 4 revisions

Why Kubernetes?

Kubernetes is a system for managing containerized applications across multiple hosts, providing basic mechanisms for deployment, maintenance, and scaling of applications.

Kubernetes is:

  • lean: lightweight, simple, accessible
  • portable: public, private, hybrid, multi cloud
  • extensible: modular, pluggable, hookable, composable, toolable
  • self-healing: auto-placement, auto-restart, auto-replication

Kubernetes builds upon a decade and a half of experience at Google running production workloads at scale, combined with best-of-breed ideas and practices from the community.

Why containers?

  • application-centric management: raising the level of abstraction from running an OS on virtual hardware to running an application on an OS using logical resources delivers the simplicity of PaaS with flexibility of IaaS
  • Dev and Ops separation of concerns: separation of build and deployment decouples applications from infrastructure
  • agile application creation and deployment: it's easier and faster to create a container image to run your app than a VM image
  • continuous development, integration, and deployment: build and deploy application images many times a day, with fast and easy rollbacks
  • loosely coupled, distributed, elastic, liberated micro-services: break apps into smaller pieces that can be deployed and managed independently and dynamically -- not a fat monolithic stack running on one big single-purpose machine
  • environmental consistency across development, testing, and production: runs the same on the laptop and in the cloud
  • cloud and OS distribution portability: run on Ubuntu or RHEL, on prem or GCE; makes sense for build and test environments as well as for deployment
  • resource isolation: predictable application performance
  • resource utilization: high efficiency and density
Clone this wiki locally