Kubernetes and Docker

© Elephant Scale
January 13, 2022

Overview

Containerization has taken the IT world by storm, in the last few years. Large software houses, starting from Google and Amazon, are running significant portions of their production load in containers.

Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. It groups containers that make up an application into logical units for easy management and discovery. Kubernetes builds upon 15 years of experience of running production workloads at Google, combined with best-of-breed ideas and practices from the community.

This course introduces the students to containers in general, then continues with Kubernetes, its architecture, its use in production, and its best practices.

What You Will Learn

  • Docker
    • Benefits of containerization
    • Docker concepts and architecture
    • Using docker commands
    • Dockerfiles and building dockers
    • Deploying docker containers
    • Working with container registries
  • Kubernetes
    • Kubernetes concepts and architecture
    • Orchestrating Docker containers with Kubernetes
    • Labels and selectors
    • Deploying resilient, scalable services
    • Kubernetes volumes
    • Kubernetes networking
    • security

Duration

5 days (Docker – 2 days, Kubernetes – 3 days)

Audience

Developers, architects, admins

Format

50% lectures, 50% hands-on labs.

Prerequisites

  • Must-have: comfortable with Linux environment.
  • Familiar with software development

Lab environment

A cloud based lab environment will be provided.

Students will need the following

  • A reasonably modern laptop with unrestricted connection to the Internet. Laptops with overly restrictive VPNs or firewalls may not work properly
  • Chrome browser
  • SSH client for your platform

Detailed Outline

Part 1 – Docker

Containerization Introduction

  • Monolithic apps vs. microservices
  • Deploy issues faced by developers
  • Virtual machines vs containers
  • Containerization technologies

Docker Intro

  • Docker architecture
  • Docker internals
  • Running docker
  • Docker concepts: images, containers, registries
  • Introduction to Dockerhub
  • Labs

Working with Docker Containers

  • Downloading Docker images
  • Running docker containers
  • Managing container life cycle
  • Labs

Building Custom Docker Images

  • Bundling our applications in a container
  • Introducing the Dockerfile
  • Building an image from a Dockerfile
  • Understanding layers and commands
  • Labs

Working with the Registry

  • Introduction to container registries
  • Introduction to DockerHub
  • Creating a repository on DockerHub,
  • Publishing custom images to registry
  • Dev setup with a private container registry
  • Wrap-up
  • Labs

Networking

  • Understanding Docker networking
  • Various networking options for Docker
  • Bridge vs Host networking
  • Exposing ports
  • Labs

Storage

  • Persistent storage in Docker
  • Using binds and volumes
  • Defining and using storage volumes
  • Storage backup and restore
  • Labs

Part 2 – Kubernetes

Kubernetes Intro

  • Evolution of orchestration systems
  • Kubernetes introduction and features
  • Benefits
  • Design principles
  • Case studies

Kubernetes Architecture

  • Kubernetes architecture
  • Controllers and workers
  • Namespaces
  • Controller, Scheduler, etcd, kubelet
  • Managing state in etcd
  • Pods and containers
  • Replicasets
  • Demonsets
  • Labs

Kubernetes Resources

  • Labels and annotations
  • Node selectors
  • Pod assignments
  • Resource requirements and limits
  • Scheduling and resource allocations
  • Labs

Networking

  • Docker networking
  • Kubernetes networking
  • Networking of pods and containers
  • DNS service
  • Exposing services
  • Labs

Storage

  • Kubernetes volumes
  • Provisioning and using persistent volumes
  • Dynamic volume allocation
  • Labs

Deploying Scalable Services

  • Deployments and Replica Sets
  • Services
  • Deployment strategies
  • Rolling out deployments
  • Blue/green deployments
  • Deploying services
  • Ingress
  • Labs

Kubernetes Ecosystem

  • Developer tools
  • Monitoring tools
  • Testing tools
  • Helm
  • Labs

Security

  • Docker and Kubernetes security
  • Role-based access control (RBAC)
  • Enterprise-grade features
  • Docker Trusted Registry

Practical Kubernetes Examples

  • A 3 tier web application: wordpress
  • Container level monitoring
  • Load balancing traffic
  • Autoscaling
  • A/B testing
  • Kubernetes in the cloud
  • Kubernetes as service

Kubernetes Best Practices

  • Configuration examples
  • Writing better manifest files
  • Optimizing kubernetes operations
  • Monitoring resource usage
  • Tracking changes
  • Health checks
  • Liveness probes

Workshops (time permitting)

  • Students will work on end to end scenarios using Docker and Kubernetes