shenyi
管理员
管理员
  • UID1
  • 粉丝38
  • 关注0
  • 发帖数751
阅读:2904回复:4

自研边缘云方案前奏:kubelet源码级学习和魔改

楼主#
更多 发布于:2022-11-01 02:40
   之前我们针对k8s周边组件开过类似的源码级课程:
    1、Operator实战3:手撸k8s原生cicd框架(task篇)   (这个是tekton的自我改进版)
    2、k8s速学3:Informer深入学习篇  
  3、k8s Controller runtime深入学习和源码理解篇

  
    这回来个刺激的,我们后面打算动k8s核心组件。先从kubelet开始。本课程基于k8s1.22,不是网上那种读读源码,然后把函数用中文标注读一遍那种,毫无意义。本课程的主要目的是通过源码讲解、魔改kubelet,并且后面 我们要自研边缘云的kubelet组件。
      本课程需要拥有较强的golang编码功底才能观看,完全不适合新手。
      由于众所周知的原因, 课程关键细节会留坑,VIP学员一对一口述破解
       课程里使用的是演示环境是windows笔记本。那么,我们要在 windows笔记本上启动出官方的kubelet

      本课程预估100课时左右


第四章:kubectl exec原理(补充章)
第50讲:基本原理结构、手扒源码进行简化
我们用3课时做个补充章节,这也是高频面试题。今天先说原理。下节课我们来魔改代码


第51讲:修改源码绕过k8s apiserver实现kubectl exec
今天我们玩个好玩的。绕过k8s apiserver实现exec


第52讲:手工写代码模拟kubectl exec ->apiserver->kubelet全过程

这课时我们把前面的代码整合在一起,手工写代码模拟apiserver、和kubelet 完整的模拟kubectl exec过程



本课程每周不定期更新







第三章:POD状态和监听(主模块源码学习)
 
......     [更多课时戳这]   ......
第41讲:连接真实容器运行时、官方代码阉割
有了上节课基础,今天我们来连接真实容器运行时,并进行官方代码阉割

第42讲:构建虚拟POD(1): 基本流程、如何处理POD状态
为了加快进度,今天我们引入概念:虚拟POD。(一个不存在的POD)我们如何让它运行起来

第43讲:构建虚拟POD(2): 初步实现修改POD状态、触发同步
我们用代码修改POD状态,并触发和k8s同步

第44讲:构建虚拟POD(3): 让不存在的POD运行起来、proberManager了解
上节课我们构建出了虚拟POD,今天让它运行起来

第45讲:构建虚拟POD(4): 让不存在的POD变成Ready 试听
沿着上节课,我们让虚拟POD变成ready

第46讲:虚拟POD之支持更新和删除(初步)
删除k8s资源,如POD。其实有很多细节在里面。今天我们来做个引导

第47讲:默认情况下kubelet没启动为何删除不了POD
更详细的问题是:当我们执行kubectl delete 时到底发生了什么,谁最终删除了POD


第48讲:再看Statusmanager、代码改造、实现POD删除
今天我们来手工代码实现真正的删除POD。在node不存在的情况下如何触发资源删除

第49讲:POD的DELETE和REMOVE有什么区别


一个补充课。










第二章:代码实现kubelet注册(TLS Bootstrap)
第11讲:TLS BootStrap模拟(1) 基本概念和流程 试听
这一章我们要写大量代码,来模拟kubelet注册节点的过程

第12讲:TLS BootStrap模拟(2) 理解 kubeadm 创建token 的原理
之前课程我们使用的是kubeadm创建token,今天我们了解下原理

 ........................

第16讲:TLS BootStrap模拟(5)手工实现CSR请求和获取证书
今天是一个手工课。下节课开始我们用代码实现这个过程

第17讲:代码实现CSR请求(1):代码生成证书 试听
这节课开始大量代码。 前面我们是手工完成的证书,今天我们代码来生成证书
 
......     [更多课时戳这]   ......




第一章:kubelet快速魔改,在笔记本上启动
第1讲:开张课、课程内容 试听
老套路的开张课,讲下课程基本内容和环境准备

第2讲:复习课:再看kubelet 的配置文件、构建启动文件
之前我们二进制装过k8s,涉及到几个配置文件。今天讲一下出处,并构建出启动文件

第3讲:在笔记本上运行官方 kubelet(1): 手动模拟cAdvisor
今天是第一个修改点。由于本地没有容器,需要做一些修改

第4讲:本地运行官方kubelet(2): 手动模拟容器运行时、OOM调节
接着上节课,我们需要手动模拟容器运行时

第5讲:本地运行官方 kubelet(3): 设置节点标签、PodCIDR
今天是第三个修改点,设置POD标签。下节课就能在本地运行出kubelet

第6讲:在笔记本上运行官方kubelet(4): 本地启动 试听
今天我们完成在本地笔记本上(windows)启动kubelet 。下节课开始我们分拆功能,逐步手工模拟实现
......     [更多课时戳这]   ......
会讲故事的程序员
shenyi
管理员
管理员
  • UID1
  • 粉丝38
  • 关注0
  • 发帖数751
沙发#
发布于:2022-12-06 02:17
进入第二章
会讲故事的程序员
shenyi
管理员
管理员
  • UID1
  • 粉丝38
  • 关注0
  • 发帖数751
板凳#
发布于:2022-12-24 02:00
更至第19讲
会讲故事的程序员
xxcode
资深老生
资深老生
  • UID3802
  • 粉丝0
  • 关注0
  • 发帖数3
  • 社区居民
地板#
发布于:2022-12-24 14:13
学习ing
shenyi
管理员
管理员
  • UID1
  • 粉丝38
  • 关注0
  • 发帖数751
4楼#
发布于:2023-05-26 02:19
更至第52讲
会讲故事的程序员
游客

返回顶部