K8s controller and CRD patterns in Python - kuryr-kubernetes case study
summary
Kuryr-Kubernetes implements Neutron networking and Octavia load balancers for pods, storing state in Kubernetes CRs instead of a DB and avoiding double encapsulation to improve throughput. Python lacks client-go so the project implements a streaming watch API with resourceVersion retries, a watcher that spawns per-resource green-thread queues, and a retry handler with exponential backoff for transient OpenStack failures. Annotations are replaced by CRDs with finalizers so OpenStack resources are created, tracked, and reliably cleaned up.
AI-written summary · about
chapters (15)
- 0:00Introduction
- 0:21Agenda
- 1:17K8s controller
- 2:09K8s benefits
- 4:03Controller loop
- 4:52Controller overview
- 5:29ClientGo
- 5:59Component overview
- 11:38Custom resources definition
- 13:10Why custom resources definition
- 14:23Why we abandoned them
- 14:40Annotations
- 16:08custom resource definition
- 17:21removal of finalizers
- 20:02Thank you
related talks
40mExtending K8s- Introducing Custom Resources, Controllers, Operators & Schedulers
48mKUBERNETES EXTENSIBLE MODEL EXPLAINED: CRDS AND OPERATORS
34mPractices for Designing Kubernetes Controllers and CRDs — A Networking Example
29mKubernetes Reloaded: AKA How to Avoid the Dev Plateau with CRDs
48mKubernetes as backend: CRD & Operators
29mKubernetes Reloaded AKA How to Avoid the Dev Plateau with CRDs
31mKubernetes is a Platform Platform
34mExtending Kubernetes 101
