Kubernetes

Kubernetes (source code) is a container orchestration system for deploying, scaling and operating applications.

Official Kubernetes logo.

Kubernetes tools

  • Helm (source code) is a package manager for Kubernetes charts, which are the way to define common types of Kubernetes cluster arrangements, like MySQL, Cassandra or Jenkins.

  • Gitkube (source code) makes it possible to deploy an application to Kubernetes using git push, similar to how Heroku popularized making platform-as-a-service deployments easy.

  • Kompose (source code) translates Docker Compose files into Kubernetes configuration resources.

  • skaffold (source code) makes it easier to develop locally with Kubernetes.

  • kubethanos is a tool to kill half of your Kubernetes pods at random, to test the resilience of your infrastructure under highly chaotic scenarios.

Kubernetes background and retrospectives

  • Borg, Omega and Kubernetes goes into the history of Borg and Omega, projects that preceded Kubernetes' creation. There are a ton of great notes on why they developed the project in certain ways and what they knew to avoid based on the prior work on Borg and Omega.

  • Kubernetes at GitHub provides a retrospective on transitioning GitHub's infrastructure from a traditional Ruby on Rails deployment architecture to a more scalable container-based Kubernetes system. There are some great details on the steps in the transition and ramping up capacity until it was the full system for github.com and other critical services.

  • Reasons Kubernetes is cool breaks past the "why would I ever need this?" initial developer reaction and gives solid reasons such as better visibility into all of the services running on your Kubernetes cluster and potentially much faster deployment after appropriate configuration.

  • How we designed our Kubernetes infrastructure on AWS explains how the Kubernetes Infrastructure Technology Team (yes, that abbreviates to KITT in honor of the 1980s Knight Rider TV show) at Atlassian starting using the tool and how they have built infrastructure around it for the company to operate their container-ized applications.

  • 10 Most Common Reasons Kubernetes Deployments Fail goes over many of the top technical reasons why issues come up with Kubernetes and what you need to do to avoid or work through them.

  • Draft vs Gitkube vs Helm vs Ksonnet vs Metaparticle vs Skaffold gives a great overview of the most popular tools that make it easier to use Kubernetes.

  • Architecting applications for Kubernetes is stuffed full of great design advice that is now available as people having been using Kubernetes for a couple of years.

  • "Let’s use Kubernetes!" Now you have 8 problems is a counter-argument for why you should be cautious about introducing the significant complexity overhead of Kubernetes (or any related tools) into your environment unless you really need the advantages that they can provide. Each developer, team and organization should perform an explicit cost-benefit analysis to make sure the tool's scability, reliability and related functionality will outweigh the downsides.

  • How Zalando manages 140+ Kubernetes clusters covers the architecture, monitoring and workflow of a team that has to run a decent number of clusters for their development teams.

Kubernetes tutorials

What do you want to learn next about Python deployments?

I've built a Python web app, now how do I deploy it?

Can I automate testing and deployments for my app?

How do I log errors that occur in my application?


Matt Makai 2012-2022