Mastering Container Networking

Container Networking is simple! Just kidding, it's not ๐Ÿ™ˆ But this series will help you understand it! It starts from a very thorough step-by-step guide on how to reproduce a single-host container networking using only standard Linux tools. Then it moves to higher-level concepts such as proxy sidecars and service discovery, and finally touches upon cross-host container networking in Kubernetes.

Linux network namespaces used for container isolation.

Read more

Working with Kubernetes API

This is a work-in-progress series on working with the Kubernetes API from the command line and from code. The series starts with an overview of the most fundamental Kubernetes API concepts such as Resource, Kind, and Object, touches upon the API structure and then continues with practical examples of how to access the API. The goal is to help the reader understand the contemporary Kubernetes API clients (Go and Rust), starting from the lower-level REST functionality and ending with advanced abstractions like Informers and Work Queues. The series is intended for folks writing all sorts of Kubernetes automation including custom operators and controllers.

Kubernetes API structure.

Read more

Writing Kubernetes Controllers/Operators

This is a work-in-progress series on writing Kubernetes Controllers and/or Operators. The series starts from an overview of the Kubernetes Operator pattern and will continue with more practical posts on how to access the Kubernetes API, how to use client-go, including its advanced functionality such as informers and watchers, etc.

Kubernetes control loop.

Read more

Implementing Container Manager

This series of articles takes you on the journey of writing a Container Manager - a piece of software that makes containers on a single host happily coexist. The goal of this series is not to write yet another full-blown manager like containerd, docker, or podman, but to help you understand better the responsibilities of the manager and its typical architecture. And, of course, to practice some systems programming in Go and Rust on the way ๐Ÿ˜

Futurama's Bender saying - I'll make my own Kubernetes, with blackjack and h@@kers!

Read more

Learning Prometheus and PromQL

Prometheus is not a time-series database. It's a monitoring system that happens to use a TSDB under the hood. This TSDB is optimized to serve monitoring use cases efficiently, sometimes at the expense of correctness or completeness of query results. That's why periodically, it might be tricky to reason about the observed behavior. This series helps you to understand Prometheus better.

Prometheus metrics.

Read more