EuroPython 2018

A Thorough Introduction to Containers and Kubernetes

Speaker(s) Ruben Orduz

Containers have more or less taken over the world of application, web APIs, mobile endpoints and other forms of deployment. They have become the currency, the “table stakes” and de-facto application deployment unit. Their raise to the fore has brought about a whole host of use cases which weren’t practical or accessible in the world of “classic” paradigms of infrastructure and virtualization. Containers have also brought application deployment closer and more accessible to developers.

But as more use cases, deployment styles and exponential adoption of containers was ongoing, a new set of problems began to surface: how do you manage the ever growing number of containers in a deployment? How do you make sure containers have the right resources, deployed to the right machine, running with the correct parameters, how do you scale in and out without disruption? How do you make sure in a fleet of X containers that they’re all running and in healthy state? Enter Kubernetes.

Initially developed internally by Google to replace their own aging and complex container orchestration and management framework. It had to meet all the stringent standards and mind-boggling scale that Google operates on, but from the get-go an effort was made to make the learning curve and developer experience as approachable as possible. At certain point the creators made the case to Google to release kubernetes to the open source community – a crucial decision that has helped “k8s” (as it’s commonly referred to as) reach rock star levels of fame and mind share not just in the FOSS community but also across industries and businesses from small operations to gigantic multinational corporations with thousands.

The goal of this course is to give the attendees a solid foundation of the core concepts mentioned above both in theory and hand-on practice using docker, kubernetes and friends to deploy a sample multi-tier python web application. All attendees need is a laptop with minikube installed and an Internet connection.

Course Outline:

  • Instructor intro
  • Theoretical Part I
    • The problem: the “classic” way of application deployment
    • Containers
      • What are they
      • How they work
      • Resource isolation
      • Resource utilization
      • Access control
      • Common uses
  • Hands-on Part I
    • Container definition
    • Container Image
    • Registries (local/remote) and differences therein
    • Building a container image
    • Running containers
    • Container “Management”
  • Theoretical Part II
    • The problem(s) with container management
    • Kubernetes
      • Objects
      • API
      • Architecture
      • Life cycle
      • Deployments/upgrades/rollbacks
  • Hands-on Part II
    • kubectl introduction
    • Initial deployment of all tiers of the app
    • Tuning application parameters on-the-fly, scaling out/in
    • Upgrade/rollback
    • Self-healing/HA
  • Class wrap up and open Q&A


  1. Gravatar
    Hello everyone:

    A few things to note:

    * Due to the potentially high number of attendees, I will change the original format a little bit to make it a bit more lecture-style. It will have quite a bit of practical, hands-on parts, but those be mostly "follow along" style. The original format was optimal to up to 30 attendees, I was told by organizers it could up to 90! at EuroPython.

    * If you want to follow along in the hands-on exercises it is *absolutely required* you have the following packages running on your machine (or a VM elsewhere):

    * VirtualBox or xhyve (if OSX)
    * Recent python and pip
    * Docker
    * Minikube
    * kubectl

    It's a lot of material to cover and most likely I won't be able to help you debug installation of the packages mentioned above.
    — Ruben Orduz,
  2. Gravatar
    Please create a free Docker Hub account at it's required if you want to follow the demo along.
    — Ruben Orduz,
  3. Gravatar
    Will the material (presentation / code etc) be provided afterwards?
    — Sergios Aftsidis,
  4. Gravatar
    Please do the following before you come to the conference center (bandwidth is not very good):

    `docker pull ipython/ipython`
    `doker pull python:2`
    `docker pull python:3`
    — Ruben Orduz,

New comment