Introduction to Kubernetes

Introduction and history of the Kubernetes project

view on github

"We think over time that our deep, comprehensive support for containers on Google Cloud Platform will create a gravity well in the market for container based apps and that a significant percentage of them will end up with us." - 2015

"From our perspective, the first and best option is that you run your container based apps on Google Container Engine, second best is that you run them on Google Compute Engine using Kubernetes, and third best is that you run them someplace else using Kubernetes." - 2015

"The theories of supply chain diversification and vendor risk management both recommend against relying on a single supplier for any critical component of one’s business or infrastructure. This has been borne out by the experience of numerous customers over the years with large vendors of proprietary IT systems and software. Part of the appeal of Docker and Kubernetes is the degree to which they significantly lower the friction involved in moving applications between various resource pools (laptop to server, server to server, data center to data center, cloud to cloud, etc.)." - 2015


Historical considerations

  • The container format originates from cgroup, created by google as an addition to the Linux kernel :

    1. cgroup allows building an isolated execution context called a container that exposes a virtualized and simplified OS.
    2. As a result, starting a container doesn't require virtualization of the entire computer (like in a VM) and is much faster.
    3. What docker actually did is creating an interoperable format for the containerization of applications.
    4. cgroup has since been merged into the kernel main branch.
  • The trajectory of modern cloud computing (2015) :

    1. The docker daemon only operates on a single computer.
    2. Thus, additional requirements appear when containerized apps have to scale horizontally :
      • How can containers and the workloads they embark be coordinated, distributed, and managed ?
      • How can they operate in multi-tenant network environments ?
      • How are they secured ?
    3. Meet K8s :
      • If containers have empowered individual developers by reducing the drudgery of deployment, Kubernetes empowers teams by minimizing the quagmire of coordination.
  • Important considerations on K8s :

    1. It is an all-in-one framework for distributed systems
    2. Its complexity stems from offering "a unified set of APIs and strong guarantees about cluster state".
    3. K8s took over because google's hands-off approach of managing the project led to the creation of a vast community around it.