Architecting and scaling apps on Kubernetes

A hands-on course on mastering containers and Kubernetes and the tools you'll need to build real, working applications at scale.

Learn Kubernetes online
You may feel stranded while learning Kubernetes

You keep hearing people talking about Kubernetes as if it were the holy grail of tech.

But every time you read the docs, you struggle to understand why you should spend time on it.

It' so complex.

How can it even compete with SSH → docker-compose up?

That's only two commands!

But maybe you're convinced that Kubernetes can handle Google kind of load and you should learn it.

To work effectively within Kubernetes, you should understand:

  • 1. Docker (images, containers, volumes, layers, etc.)
  • 2. Kubernetes fundamentals (pods, ingress, stateful sets, persistent volumes, etc.)
  • 3. Helm (for templating resources)
  • 4. Ansible, Puppet and Chef to configure your nodes
  • 5. Let's not forget your CI stack (Jenkins, Travis, etc.)
  • 57. What is best CNI
  • 58. How kubectl works

Before you can deploy your "Hello World" app.

It's getting to the point that no one person can be an expert in all of it, but what should you focus on?

In Kubernetes everything feels like it's on fire
Kubernetes is hard

It seems that every Kubernetes tutorial out there is focussed on building a cluster from scratch — a slight variation from Kubernetes The Hard Way.

But what's the point of building a cluster from scratch if you don't know how to take advantage of it?

How can you set the control manager flags if you don't know how the apps respond to that? (I'm looking at you --pod-eviction-timeout)

In this course, you will learn how to design, develop and deploy applications in Kubernetes.

And you will learn how to:

  • package apps in containers

  • deploy apps on a Kubernetes cluster

  • release apps to production using rolling updates, canary deployment, or blue-green deployments

  • expose your services using load balancers and ingress controllers

  • manage databases and stateful applications

  • leverage database clustering using operators

  • not repeat yourself using a templating engine for Kubernetes resources

Kubernetes doesn't know how to deploy Java, Node.js, or .NET applications. The only thing it can deal with is Linux containers. But how do these Linux containers work? Why should you care? Are those necessary to master Kubernetes?

You will learn how to package and run applications in Docker containers. The module covers the following topics:

  • Containers vs VMs
  • Understanding process isolation
  • Is Docker the only one?
  • Docker client-server architecture
  • Running containers
  • Building Docker images
  • Mounting volumes
  • Exposing ports
  • Managing containers lifecycle
  • Injecting environment variables
  • Debugging running containers
Docker
Containers vs VMs

Learn the basics of Kubernetes and deploy your first application to minikube — a Kubernetes cluster for local development. Learn how to declare resources in YAML files, how to send those to the cluster and retrieve them. Understand how Kubernetes reconciles the desired state of the infrastructure.

You will learn the basics of Kubernetes and how to deploy Linux containers. The module covers the following topics:

  • Managing containers at scale
  • The battle of container orchestrators
  • Visualising the data centre as a single VM
  • The best Tetris player
  • Exploring an API over your infrastructure
  • What are Pods, Services, and Igresses?
  • Creating a local cluster with minikube
  • Creating a Deployment
  • Exposing Deployments
  • What is a Pod?
  • Scaling applications
  • Testing resiliency
Kubernetes Open API definition
Playing tetris with Kubernetes

Every time you deploy new features in production, you don't want to stop your service, load a new version and remove the holding page. Ideally, you should be able to transition to a new version of your application without anyone noticing any downtime. You can leverage Kubernetes to do that.

You will learn different techniques to deploy your applications with zero downtime. The module covers the following topics:

  • Monitoring for uptime
  • Liveness probe
  • Readiness probe
  • Executing zero downtime deployments
  • Using labels and selectors
  • Releasing features with canary deploymentss
  • Releasing features with blue-green deployments
  • Preparing for rollbacks
Liviness probe
Rolling updates

How does Kubernetes store files and state? Can you host databases in it? Should you? Can you extract configurations and share them with different deployments? How do you make sure that your storage layer is replicated and persisted even if a node becomes unavailable?

You will learn how to persist data in Kubernetes. The module covers the following topics:

  • Managing configurations
  • Managing secrets
  • Using Kubernetes Volumes
  • Creating Persistent Volumes
  • Creating Persistent Volume Claims
  • Provisioning volumes dynamically
  • Managing stateful applications
  • Creating volumes on bare metal
  • Deploying a single database with persitence
  • Deploying a clustered database with persitence
  • Designing storage that can span multiple nodes
Deploying a clustered PostgreSQL
Clustered PostgreSQL with OpenEBS

Resources in Kubernetes are described as YAML files. If you wish to have the same resources for different environments such as development, preproduction and production, you may be tempted to copy the files three times. Or you could use a templating engine. Learn how to do precisely that with Helm — the Kubernetes package manager.

You will learn how to template resources for different environments. The module covers the following topics:

  • Creating reusable templates
  • Helm's templating engine
  • Understanding the Helm architecture
  • Templating resources with Go and Sprig
  • Managing releases with Helm
  • Writing helper functions
  • Reverting changes with rollbacks
  • Depending on other charts
  • Storing reusable templates in repositories
Helm architecture
Templating resources

After deploying your app to production, the received traffic may change in unpredictable ways. How do you keep your app responsive at all times? You can adapt the number of replicas. But is it feasible to do this manually, or are there better ways?

You will learn how to autoscale your applications based on CPU, memory and application-specific custom metrics. The module covers the following topics:

  • Introduction to autoscaling
  • The Horizontal Pod Autoscaler
  • The Kubernetes metrics registry
  • Exposing metrics from your apps
  • Installing and configuring Prometheus
  • Understanding custom and external metrics adapters
  • Tuning the Horizontal Pod Autoscaler
Cluster autoscaler
Scaling with external registry metrics

We care more about our students' success than taking their money.

If you follow the lectures and practise the material and still DO NOT feel like you are making progress 30 days after you begin doing the work, we will try to work with you to identify what's missing. And if that doesn't work, we'll give you a full refund.

We're honest to the end about the level of effort, skills, and other ingredients required.

This is not a "master Kubernetes in 3 hours" or watch someone else deploying containers in Kubernetes video course. Completing the Learnk8s Academy's modules takes time and effort… but it does work. The learning curve is steep; then, the plateau of usefulness is very long and smooth. It's a great feeling operating Kubernetes after you've mastered it.

Learn Kubernetes now and stay ahead of the game.

Everything you need to architect, develop and deploy applications at scale and get officially certified by the Linux Foundation.

The full package

Courses included:

  • Linux containers and Kubernetes
  • Kubernetes fundamentals
  • Advanced deployment strategies
  • Managing state
  • Templating
  • Autoscaling

Also included:

  • Tick

    Downloadable ebook for each session

  • Tick

    Interactive content and diagrams

  • Tick

    Practice exercises

  • Tick

    Discounted CKAD exam (30%)

  • Tick

    Certificate of completion

  • Tick

    Access to the online portal

  • Tick

    CKAD tips and tricks

  • Tick

    Unlimited access

  • Tick

    Lifetime updates

Everything you need to architect, develop and deploy applications at scale.

The full package

Courses included:

  • Linux containers and Kubernetes
  • Kubernetes fundamentals
  • Advanced deployment strategies
  • Managing state
  • Templating
  • Autoscaling

Also included:

  • Tick

    Downloadable ebook for each session

  • Tick

    Interactive content and diagrams

  • Tick

    Practice exercises

  • Tick

    Certificate of completion

  • Tick

    Access to the online portal

  • Tick

    Unlimited access

  • Tick

    Lifetime updates

Everything you need to architect, develop and deploy applications at scale.

The full package

Courses included:

  • Linux containers and Kubernetes
  • Kubernetes fundamentals
  • Advanced deployment strategies
  • Templating

The systems, techniques, and processes you'll learn in the Learnk8s Academy have been developed over 2+ years during our hands-on, instructor-led workshops.