Kubernetes
Table of Contents
Introduction
Kubernetes orchestrates the computing, networking, and storage infrastructure on behalf of user workloads.
Kubernetes is a portable, extensible open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a huge and rapidly growing ecosystem after being open sourced by Google in 2014, being the second largest repository on GitHub only behind Linux. It builds upon a decade and a half of experience that Google has with running production workloads at scale.
Kubernetes services, support, and tools are widely available as evidenced both by every single Cloud Service Provider now providing a managed service of it and big name companies putting their weight behind it in terms of both managed offerings and code contributions.
CSP
Cloud Service Providers with managed service offerings
- Google (+++)
- Microsoft (++)
- AWS
- Digital Ocean
- IBM
- Oracle
PaaS
Platform as a service oferings of Kubernetes
- RedHat
- VMWare
- Pivotal
Hyper Scale
Powers much of the big name sites today
- Shopify
- GitHub
- Tinder
- Pokemon Go
Background
As containers become more popular each day, more technology is being developed to help unleash all the power containers can offer. One of the most useful technologies created around containers in the deployment side is orchestrators.
A container orchestrator is a software that is able to orchestrate and organize containers across any number of physical or virtual nodes. This greatly simplifies the deployment of infrastructure (each node only has Docker installed) and its operation (as all servers are exactly equal). The container orchestrator takes into account things as failing nodes, adding more nodes to the cluster or removing nodes from the cluster by moving containers from one node to another to keep them available at all times.
While containers + orchestrators technology not only resolves a lot of problems related with infrastructure management, it also resolves a lot of problems regarding deploying software in the infrastructure, as the software, its dependencies and runtime are always deployed at the same time, minimizing the errors commonly associated to deployments in non-immutable environments.
Highlights
Managed complexity: Automation of the deployment, scaling, and operation of application containers in a clustered environment via primitives
Vendor Lock-in: Essentially every major cloud provider (public, private, hybrid) support Kubernetes
Multi-Cloud: Ideal for managing multi-cloud environments / workloads
Self-healing: Auto-placement, auto-restart, auto-replication, auto-scaling
Google Backed: Originally built by Google leveraging a decade of experience running containers at scale
Vibrant Community: One of the fastest moving projects in open source history, 2nd largest. Additionally over 50,000 users on slack which include many google engineers.
Big Name Supporters: Google, Microsoft, AWS, IBM, RedHat, Oracle, VMWare, Intel, Pivotal etc
Flexibility: Simplicity of a PaaS with the flexibility of IaaS