第29节 CloudNative / Kubernetes 学习资源整理
❤️💕💕新时代拥抱云原生,云原生具有环境统一、按需付费、即开即用、稳定性强特点。Myblog:http://nsddd.top
[TOC]
需求
提示
我们需要对 kubernetes 进一步的学习和深造,看源码是必须的道路。
与其重要的,是对 kubernetes 资源的收集。
⚠️ 所有资源均是采用外链连接,书本资源或不放连接,其他均为自己感受和总结。如有侵权请联系删除。
⚠️ **注意,这篇文章将永久保存在 notion,将会不断地更新下去,提供了可写通道,如果你有更好的资源,欢迎补充在notion上,地址是:https://nsddd.notion.site/CloudNative-2f278e98ed274999829333272415c72d **
关于kubernetes:
- 官网
- GitHub
- cubxxw - pr
- 社区维护的 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 的基础概念,我们或许在前面有讲解过。
比如 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 有很多复杂的地方,尤其是网络和存储,希望以后可以成为 ×
阅读方法(其他开源项目类似)
- 先整体,后局部(不钻牛角尖)
- 深入局部中的学习中去
- 耐心,多看代码~
学习方法
参考2022GSoC 谷歌开源之夏活动,对于学院的解答。
我是opensuse组织的GSoC'22贡献者,我想知道我可以如何学习和贡献k8s社区。我知道k8s的基础知识,但现在我想学习一些中级和高级概念,以便我可以在未来为k8s做出贡献。非常需要帮助
- Start learning each part of k8s.
- For example, start with Scheduler part.
- Go to k8s github and look into the code https://github.com/kubernetes/kubernetes
- It will be the best place to start
- Read about scheduler and find described logic in the source code.
- But first i think that you need to learn how each part is communicating and for what it is responsible.
- It is great that you wish to contribute.
- after that, learn everything about different Workloads (StatefulSet, ReplicaSet, DaemonSet etc.)
- then services and ingress
- then pv/pvc
- then go deeper and learn about Container Runtime Interface (CRI)
- and about Network Interface (CNI)
- and how they are communicating
- between themselves and with the host machine
- i guess that should give you a good grasp of how everything is working internally
- you can always check kubernetes api specification if you are looking for something what you have not learned yet
阶段型方法
- 第一阶段 先了解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语言精进之路
- Istio (服务网格 推荐 https://academy.tetrate.io/courses/take/istio-fundamentals-zh/lessons/26470007-1-0)
- eBPF
- Kubernetes 加固指南
- 云原生基础架构
- Kubernetes 基础教程
- 迁移到云原生应用程序
- Kubernetes 中文指南/云原生应用架构实战手册
视频资源
极客时间 云原生 训练营课程(十五节)
网站资源
推荐书籍
- 深入剖析kubernetes
- Kubernetes 源码解析
youtube 精选视频
GitHub 精选仓库
- go 开发之旅
- kubernetes 源码解读
- 云原生(Cloud Native)、容器化(Docker)、容器编排(k8s)、服务网格(Istio)、无服务器(Serverless)、微服务、CI/CD、DevOps相关内容总结。
- Kubernetes 中文指南/云原生应用架构实战手册
数据统计和收集
CNCF 数据
资料库:github.com/kubernetes/kubernetes 94,767
Crunchbase:crunchbase.com/organization/cloud-native-computing-foundation
第一次提交:9年前
贡献者:500+
最新推文:2个月前
公认: 2016-03-10
已毕业:2018-03-06
总部:加利福尼亚州旧金山
孵化:7 年前
艺术品: https://github.com/cncf/artwork/blob/master/examples/graduated.md#kubernetes-logos
stackoverflow:https://stackoverflow.com/questions/tagged/kubernetes
slack:http://slack.k8s.io/
YouTube: https://www.youtube.com/channel/UCZ2bu0qutTOM0tHYa_jkIwg
源码统计
Kubernetes
代码特别庞大,使用 cloc 统计 (⏱️ 2023-03-17):
其他源码统计
⚠️ 数据截止到 2023 年 3 月 17 日
- Istio : SUN:514910 (GO:339739)
- Kind : 21060
- Minikube: 178446
- sealos: 116277
END 链接
✴️版权声明 © :本书所有内容遵循CC-BY-SA 3.0协议(署名-相同方式共享)©