Skip to content
This repository has been archived by the owner on Dec 13, 2023. It is now read-only.

【分享】k8s源码学习大礼包 #86

Open
zoux86 opened this issue Feb 3, 2023 · 3 comments
Open

【分享】k8s源码学习大礼包 #86

zoux86 opened this issue Feb 3, 2023 · 3 comments
Assignees

Comments

@zoux86
Copy link

zoux86 commented Feb 3, 2023

分享内容

本人工作(容器云基础架构师)3年来的k8s源码解析,从源码角度出发,学习k8s的原理。

从kube-apiserver kube-controller-manager kube-scheduler kubelet proxy 和 kubectl 这6个组件为主线进行源码级别的学习。

同时还顺便记录一些平时用到和k8s相关的知识,例如etcd, docker, linux等相关知识。

源码地址: https://github.com/zoux86/learning-k8s-source-code

分享收获

(1)为什么分享

主要是陆陆续续有同学反馈repo内容确实对他有帮助,有位同学还私信我由此找到了一份满意的工作。

这个过程中获得了一点点成就感,希望也能够帮助到更多的入门小白

备注

本人k8s学习路程如下:

(1)第一阶段线了解k8s,是什么,能做什么,架构,核心资源对象,设计理念,发展历程等等

(2)第二阶段开始使用k8s, 自己创建pod, deploy, job等资源。能够基于k8s开发一下组件,比如实现一个controller监听pod的创建删除等。【看山是山】

(3)第三阶段开始阅读源码,了解底层实现。这个过程会对k8s有一个更深的理解。比如创建一个pod的完成历程是什么样的,k8s gc机制到底是怎么实现的。namespaces删除的时候怎么做到删除所有资源后在删除的。【看山不是山】

这里推荐源码阅读方式:理论+实践结合。

理论:通过ide之间各种跳转阅读源码

实践:自己动手在[关键代码]处增加日志,通过查看日志输出理解源码 (repo也介绍了如何二进制搭建一套K8s集群)

(4)第四阶段在排查问题中进一步深入k8s的理解

第三阶段基本上是理解了大体的原理,这个阶段要求需要一定的场景。比如在k8s集群10W pod, 上千节点。pod调度慢,deploy滚动更新异常,gc pod失败等场景。在这些场景下,有了第三阶段的基础,就知道问题大概出在哪里,从而深入挖掘具体原因。第三第四阶段通常结合在一起。

有了排查问题的过程,就会对k8s的设置理念有了更深入的了解。【看山还是山】

@callmevincent
Copy link

callmevincent commented Feb 3, 2023 via email

@rootsongjc
Copy link
Member

@zoux86 感谢分享,本条内容将通过云原生社区动态微信公众号发布。

@rootsongjc rootsongjc self-assigned this Feb 6, 2023
@devincd
Copy link

devincd commented Feb 7, 2023

感谢分享,非常不错的源码分析

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants