需求
👀 与其重要的,是对 kubernetes 资源的收集。
⚠️ 所有资源均是采用外链连接,书本资源或不放连接,其他均为自己感受和总结。如有侵权请联系删除。
关于kubernetes:
- 官网
- GitHub
- 社区维护的 kubernetes 学习资源合集
- Kubernetes源码必读的 Google 大规模集群管理器 Borg
- etcd:从应用场景到实现原理的全方位解读 和 ZooKeeper典型应用场景一览
关于 CNCF 的贡献,你需要签署 CLA
自己写作的一些资源:
都收纳到 awesome 仓库中,覆盖 📚 菜鸟成长手册🚀 CS系列 、云原生系列、区块链系列、web3系列🔥、Golang系列💡…… 访问 GitHub👀 https://github.com/cubxxw/awesome-cs-cloudnative-blockchain ⏬⏬⏬
最好需要什么
- 如果说第一步的话,那必须要了解 docker 容器底层原理和 Linux 内核基础相关。
- 先理解理解完架构了,读起来就比较快了。
- 学会使用它,不会使用,永远无法理解它的设计理念。
- 读源码还得带着问题去读,不然会很枯燥。一定要带着问题去读,不然就会很枯燥,然后陷入细节中去
- 读源码还得有一定积累量,比如你已经读过很多基础包的源码比如 net/http grpc-go 等等
- 要尝试着调试,要尝试着练习,要尝试着理解和分析产品理念,更要学会自己设计。
Kubernetes 工程师的学习顺序推荐
graph LR;
微服务 --> 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;
推荐的学习资源整理:
- 微服务:《微服务设计》
- Docker:《Docker 技术入门与实战》(第 3 版)、《Docker 容器与容器云》(第 2 版)
- Kubernetes:《Kubernetes 权威指南:从 Docker 到 Kubernetes 实践全接触》(第 5 版)、《基于 Kubernetes 的容器云平台实战》
- Knative: Knative Documentation
- Prometheus: Prometheus Documentation
- Jaeger: Jaeger Documentation
- KVM:《KVM 虚拟化技术 : 实战与原理解析》
- Istio:《云原生服务网格 Istio:原理、实践、架构与源码解析》
- Kafka:《Apache Kafka 实战》、《Apache Kafka 源码剖析》
- Etcd:etcd 实战课
- Tyk: Tyk Open Source
- Consul: Consul Documentation
- Cilium: Cilium Documentation
- OpenShift:《开源容器云 OpenShift:构建基于 Kubernetes 的企业应用云平台》
基础知识
基础概念:
我们需要知道 kubernetes 的基础概念,我们或许在前面有讲解过。
比如 Build-in 的 API Groups 和 API Objects 有什么,做什么用;
有一些很重要的工具库:
如 gengo ,包括 informer 机制;
- Cobra:命令行阿,docker、Kubernetes、sealos、sealer、ks 都具备的~
- go-restful:REST 要求开发人员以与协议定义一致的方式显式使用 HTTP 方法。这个基本的 REST 设计原则在创建、读取、更新和删除 (CRUD) 操作和 HTTP 方法之间建立了一对一的映射。
- etcd:和 fabric 一样采用 raft 共识机制的数据库,在 k3s 中很深的讲解和应用。
Restful 基础:
简单了解 Restful 概念,如果做过 Restful Service 那么最好了
熟悉一些常见的设计模式:
- 参考:https://www.yuque.com/aceld/lfhu8y/rg6nsf
熟悉常用的算法,熟悉操作系统(尤其是 Linux 的基础知识),熟悉网络的一些协议和原理。
Kubernetes 有很多复杂的地方,尤其是网络和存储,希望以后可以成为 ××领域专家
阅读方法(其他开源项目类似)
- 先整体,后局部(不钻牛角尖)
- 深入局部中的学习中去
- 耐心,多看代码~
阶段型方法
- 第一阶段 先了解k8s,是什么,能做什么,架构,核心资源对象,设计理念,发展历程等等
- 第二阶段 开始使用k8s, 自己创建pod, deploy, job等资源。能够基于k8s开发一下组件,比如实现一个controller监听pod的创建删除等。【看山是山】
- 第三阶段 开始阅读源码,了解底层实现。这个过程会对k8s有一个更深的理解。比如创建一个pod的完成历程是什么样的,k8s gc 机制到底是怎么实现的。namespaces删除的时候怎么做到删除所有资源后在删除的。【看山不是山】 这里推荐源码阅读方式:理论+实践结合。
- 理论:通过 ide 之间各种跳转阅读源码
- 实践:自己动手在[关键代码]处增加日志,通过查看日志输出理解源码 (repo也介绍了如何二进制搭建一套K8s集群)
- 第四阶段 再排查问题中进一步深入k8s的理解
书籍推荐
- Go语言程序设计语言 (买了,建议有一些其他语言基础 && Go语言基础再看最好)
- 深入解刨 Kubernetes (这个我也买了,emmm,特别完美的一本书,作者有自己的讲解,是个大佬)
- kubernetes 编程
- kubernetes 源码刨析(这个我买了!!!!!!,不推荐,copy 多干货少)
- 第一本 docker 书
- 深入理解计算机系统 / 现代操作系统
- docker 容器与容器云 (还没开始看)
- Kubernetes 权威指南(熟练使用、贯穿场景)
- docker 开发指南 (还没开始看)
- Go语言精进之路
- eBPF
- Kubernetes 加固指南
- 云原生基础架构
- Kubernetes 基础教程
- 迁移到云原生应用程序
- Kubernetes 中文指南/云原生应用架构实战手册
视频资源
- 张海龙 kubernetes 开发之旅
- bilibili 搜索 client-go kubernetes必会
- 插座煤电 深入理解 k8s 网络
- 极客时间 云原生 训练营课程(十五节)
网站资源
- 从 0 实现一个 k8s 的 CNI 网络插件
- Kubernetes Deep Dive:CustomResources 的代码生成
- Istio (服务网格 推荐 https://academy.tetrate.io/courses/take/istio-fundamentals-zh/lessons/26470007-1-0)
- kubernetes 官方文档~
- Kubernetes 中文文档 https://www.coderdocument.com/docs/kubernetes/v1.14/index.html
- helm 中文文档 https://www.coderdocument.com/docs/helm/v2/index.html
- prometheus 中文文档 https://www.coderdocument.com/docs/prometheus/v2.14/introduction/overview.html
youtube 精选视频
- 教程:从源代码构建和运行 Kubernetes 并提交您的第一个 PR
- Kubernetes源码解读: APIServer之server chain by Daniel Guo
- 如何理解开源中的大型代码库
- 如何理解开源中的大型代码库?
- Kubernetes 源码阅读
GitHub 精选仓库
- go 开发之旅
- kubernetes 源码解读
- 云原生(Cloud Native)、容器化(Docker)、容器编排(k8s)、服务网格(Istio)、无服务器(Serverless)、微服务、CI/CD、DevOps相关内容总结。
- Kubernetes 中文指南/云原生应用架构实战手册
数据统计和收集
展开
CNCF 数据
- 网站:kubernetes.io
- 资料库:github.com/kubernetes/kubernetes 94,767
- Crunchbase:crunchbase.com/organization/cloud-native-computing-foundation
- 领英:linkedin.com/company/cloud-native-computing-foundation
- 推特:@kubernetesio
- 第一次提交:9年前
- 贡献者:500+
- 最新推文:2个月前
- 公认: 2016-03-10
- 已毕业:2018-03-06
- 总部:加利福尼亚州旧金山
- 孵化:7 年前
- 开发统计:https://k8s.devstats.cncf.io/
- 艺术品: https://github.com/cncf/artwork/blob/master/examples/graduated.md#kubernetes-logos
- stackoverflow:https://stackoverflow.com/questions/tagged/kubernetes
- 博客:http://blog.kubernetes.io/
- 邮件列表:https://groups.google.com/forum/#!forum/kubernetes-dev
- slack:http://slack.k8s.io/
- YouTube: https://www.youtube.com/channel/UCZ2bu0qutTOM0tHYa_jkIwg
源码统计
Kubernetes
代码特别庞大,使用 cloc 统计 (⏱️ 2023-03-17):!http://sm.nsddd.top/sm202303172221221.png
其他源码统计
⚠️ 数据截止到 2023 年 3 月 17 日
- Istio : SUN:514910 (GO:339739)
- Kind : 21060
- Minikube: 178446
- sealos: 116277