需求

👀 与其重要的,是对 kubernetes 资源的收集。


⚠️ 所有资源均是采用外链连接,书本资源或不放连接,其他均为自己感受和总结。如有侵权请联系删除。

CloudNative 学习途径

关于kubernetes:


关于 CNCF 的贡献,你需要签署 CLA

自己写作的一些资源:

都收纳到 awesome 仓库中,覆盖 📚 菜鸟成长手册🚀 CS系列 、云原生系列、区块链系列、web3系列🔥、Golang系列💡…… 访问 GitHub👀 https://github.com/cubxxw/awesome-cs-cloudnative-blockchain ⏬⏬⏬


GitHub - cubxxw/awesome-cs-cloudnative-blockchain: 📚 菜鸟成长手册🚀 CS系列 、云原生系列、区块链系列、web3系列🔥、Golang系列💡……

最好需要什么

  1. 如果说第一步的话,那必须要了解 docker 容器底层原理和 Linux 内核基础相关。
  2. 先理解理解完架构了,读起来就比较快了。
  3. 学会使用它,不会使用,永远无法理解它的设计理念。
  4. 读源码还得带着问题去读,不然会很枯燥。一定要带着问题去读,不然就会很枯燥,然后陷入细节中去
  5. 读源码还得有一定积累量,比如你已经读过很多基础包的源码比如 net/http grpc-go 等等
  6. 要尝试着调试,要尝试着练习,要尝试着理解和分析产品理念,更要学会自己设计。

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;

推荐的学习资源整理:

  1. 微服务:《微服务设计》
  2. Docker:《Docker 技术入门与实战》(第 3 版)《Docker 容器与容器云》(第 2 版)
  3. Kubernetes:《Kubernetes 权威指南:从 Docker 到 Kubernetes 实践全接触》(第 5 版)《基于 Kubernetes 的容器云平台实战》
  4. Knative: Knative Documentation
  5. Prometheus: Prometheus Documentation
  6. Jaeger: Jaeger Documentation
  7. KVM:《KVM 虚拟化技术 : 实战与原理解析》
  8. Istio:《云原生服务网格 Istio:原理、实践、架构与源码解析》
  9. Kafka:《Apache Kafka 实战》《Apache Kafka 源码剖析》
  10. Etcd:etcd 实战课
  11. Tyk: Tyk Open Source
  12. Consul: Consul Documentation
  13. Cilium: Cilium Documentation
  14. 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 有很多复杂的地方,尤其是网络和存储,希望以后可以成为 ××领域专家

Kubernetes 的各个方向的学习路径

阅读方法(其他开源项目类似)

  • 先整体,后局部(不钻牛角尖)
  • 深入局部中的学习中去
  • 耐心,多看代码~

阶段型方法

  1. 第一阶段 先了解k8s,是什么,能做什么,架构,核心资源对象,设计理念,发展历程等等
  2. 第二阶段 开始使用k8s, 自己创建pod, deploy, job等资源。能够基于k8s开发一下组件,比如实现一个controller监听pod的创建删除等。【看山是山】
  3. 第三阶段 开始阅读源码,了解底层实现。这个过程会对k8s有一个更深的理解。比如创建一个pod的完成历程是什么样的,k8s gc 机制到底是怎么实现的。namespaces删除的时候怎么做到删除所有资源后在删除的。【看山不是山】 这里推荐源码阅读方式:理论+实践结合。
    1. 理论:通过 ide 之间各种跳转阅读源码
    2. 实践:自己动手在[关键代码]处增加日志,通过查看日志输出理解源码 (repo也介绍了如何二进制搭建一套K8s集群)
  4. 第四阶段 再排查问题中进一步深入k8s的理解

书籍推荐

视频资源

网站资源

youtube 精选视频

GitHub 精选仓库

数据统计和收集

路人建议

学习 Kubernetes 的步骤

GSoC 中一个人的讲解