Requirements
👀 More importantly, it’s the collection of kubernetes resources.
⚠️ All resources use external links, book resources may not have links, others are personal experiences and summaries. Please contact for removal if there’s copyright infringement.
About kubernetes:
- Official Website
- GitHub
- Community-maintained kubernetes learning resources collection
- Must-read Google large-scale cluster manager Borg for Kubernetes source code
- etcd: Comprehensive interpretation from application scenarios to implementation principles and ZooKeeper typical application scenarios overview
About CNCF contributions, you need to sign CLA
- Kubernetes CLA signing process
- Official developer guide markdown files
- Kubernetes owners introduction md
Some resources I wrote:
All collected in awesome repository, covering 📚 Beginner’s Growth Manual🚀 CS series, Cloud Native series, Blockchain series, web3 series🔥, Golang series💡…… Visit GitHub👀 https://github.com/cubxxw/awesome-cs-cloudnative-blockchain ⏬⏬⏬
What’s Best to Have
- If we’re talking about the first step, you must understand docker container underlying principles and Linux kernel basics.
- Understand the architecture first, then reading will be much faster.
- Learn to use it - you can never understand its design philosophy without using it.
- Read source code with questions, otherwise it will be boring. You must read with questions, otherwise it gets boring and you’ll get lost in details.
- Reading source code requires accumulation, like having read many basic package source codes such as net/http grpc-go etc.
- Try debugging, try practicing, try understanding and analyzing product concepts, and learn to design yourself.
Recommended Learning Order for Kubernetes Engineers
graph LR;
Microservices --> Docker;
Docker --> Kubernetes;
Kubernetes --> Knative;
Knative --> Prometheus;
Knative --> Jaeger;
Knative --> EFK;
Knative --> DevOps;
Prometheus --> KVM;
Jaeger --> KVM;
EFK --> KVM;
DevOps --> KVM;
KVM --> Istio;
Istio --> Kafka;
Kafka --> Etcd;
Etcd --> Tyk;
Recommended learning resources:
- Microservices: 《Building Microservices》
- Docker: 《Docker Technology Introduction and Practice》(3rd Edition)、《Docker Containers and Container Cloud》(2nd Edition)
- Kubernetes: 《Kubernetes Authoritative Guide: From Docker to Kubernetes Full Practice》(5th Edition)、《Container Cloud Platform Practice Based on Kubernetes》
- Knative: Knative Documentation
- Prometheus: Prometheus Documentation
- Jaeger: Jaeger Documentation
- KVM: 《KVM Virtualization Technology: Practice and Principle Analysis》
- Istio: 《Cloud Native Service Mesh Istio: Principles, Practice, Architecture and Source Code Analysis》
- Kafka: 《Apache Kafka in Action》、《Apache Kafka Source Code Analysis》
- Etcd: etcd Practical Course
- Tyk: Tyk Open Source
- Consul: Consul Documentation
- Cilium: Cilium Documentation
- OpenShift: 《Open Source Container Cloud OpenShift: Building Enterprise Application Cloud Platform Based on Kubernetes》
Basic Knowledge
Basic concepts:
We need to know kubernetes basic concepts, which we might have explained before.
For example, what are Build-in API Groups and API Objects, what they do;
Some very important tool libraries:
Like gengo, including informer mechanism;
- Cobra: Command line, docker, Kubernetes, sealos, sealer, ks all have it~
- go-restful: REST requires developers to explicitly use HTTP methods in a way consistent with protocol definition. This basic REST design principle establishes one-to-one mapping between Create, Read, Update, Delete (CRUD) operations and HTTP methods.
- etcd: Database using raft consensus mechanism like fabric, deeply explained and applied in k3s.
Restful basics:
Simply understand Restful concepts, it’s best if you’ve done Restful Service
Familiar with some common design patterns:
- Reference: https://www.yuque.com/aceld/lfhu8y/rg6nsf
Familiar with common algorithms, familiar with operating systems (especially Linux basics), familiar with some network protocols and principles.
Kubernetes has many complex parts, especially networking and storage. Hope to become ××domain expert in the future
Learning paths for various directions of Kubernetes
Reading Methods (Similar for other open source projects)
- First overall, then local (don’t get stuck in details)
- Deep dive into local learning
- Be patient, read more code~
Staged approach
- First stage First understand k8s, what it is, what it can do, architecture, core resource objects, design philosophy, development history etc.
- Second stage Start using k8s, create pods, deploy, jobs and other resources yourself. Be able to develop components based on k8s, like implementing a controller to listen to pod creation/deletion etc. [See mountain as mountain]
- Third stage Start reading source code, understand underlying implementation. This process will give deeper understanding of k8s. Like what’s the complete journey of creating a pod, how k8s gc mechanism is actually implemented, how namespace deletion deletes all resources before deleting itself. [See mountain not as mountain] Recommended source code reading approach: theory + practice combination.
- Theory: Various jumps through ide to read source code
- Practice: Add logs at [key code] locations yourself, understand source code by checking log output (repo also introduces how to build a K8s cluster with binaries)
- Fourth stage Further deepen k8s understanding during troubleshooting
Book Recommendations
- The Go Programming Language (bought it, suggest having some other language foundation && Go language foundation before reading)
- Programming Kubernetes (I bought this too, emmm, particularly perfect book, author has own explanations, is a master)
- Kubernetes Programming
- Kubernetes Source Code Analysis (I bought this!!!!!!!, not recommended, too much copying little substance)
- The Docker Book
- Computer Systems: A Programmer’s Perspective / Modern Operating Systems
- Docker Containers and Container Cloud (haven’t started reading yet)
- Kubernetes: The Definitive Guide (proficient use, comprehensive scenarios)
- Docker Development Guide (haven’t started reading yet)
- Go Language Advanced Path
- eBPF
- Kubernetes Hardening Guide
- Cloud Native Infrastructure
- Kubernetes Basic Tutorial
- Migrating to Cloud Native Applications
- Kubernetes Chinese Guide/Cloud Native Application Architecture Practice Manual
Video Resources
- Zhang Hailong kubernetes development journey
- bilibili search client-go kubernetes must-know
- Socket Coal Power deep understanding of k8s networking
- GeekTime Cloud Native Training Camp Course (15 sessions)
Website Resources
- Implementing a k8s CNI network plugin from scratch
- Kubernetes Deep Dive: Code Generation for CustomResources
- Istio (Service Mesh recommended https://academy.tetrate.io/courses/take/istio-fundamentals-zh/lessons/26470007-1-0)
- kubernetes official documentation~
- Kubernetes Chinese documentation https://www.coderdocument.com/docs/kubernetes/v1.14/index.html
- helm Chinese documentation https://www.coderdocument.com/docs/helm/v2/index.html
- prometheus Chinese documentation https://www.coderdocument.com/docs/prometheus/v2.14/introduction/overview.html
YouTube Selected Videos
- Tutorial: Building and Running Kubernetes from Source Code and Submitting Your First PR
- Kubernetes Source Code Reading: APIServer server chain by Daniel Guo
- How to Understand Large Codebases in Open Source
- How to Understand Large Codebases in Open Source?
- Kubernetes Source Code Reading
GitHub Selected Repositories
- Go Development Journey
- Kubernetes Source Code Reading
- Cloud Native, Containerization (Docker), Container Orchestration (k8s), Service Mesh (Istio), Serverless, Microservices, CI/CD, DevOps related content summary.
- Kubernetes Chinese Guide/Cloud Native Application Architecture Practice Manual
Data Statistics and Collection
Expand