源码分析系列文章已经开源到github,地址如下:github:https://github.com/farmer-hutao/k8s-source-code-analysisgitbook:https://farmer-hutao.github.io/k8s-source-code-analysis------------------------------------------本文大纲概述架构概览reflector - List & Watch API ServerReflector 对象...
-
《k8s 源码分析》- Custom Controller 之 Informer
-
《k8s-1.13版本源码分析》- Informer 机制
源码分析系列文章已经开源到github,地址如下:github:https://github.com/farmer-hutao/k8s-source-code-analysisgitbook:https://farmer-hutao.github.io/k8s-source-code-analysis-----------------------------------------------------------------Informer机制概述架构概览SharedInformerFact...
-
《k8s-1.13版本源码分析》-调度器初始化
源码分析系列文章已经开源到github,地址如下:github:https://github.com/farmer-hutao/k8s-source-code-analysisgitbook:https://farmer-hutao.github.io/k8s-source-code-analysis------------------------------------------------------------------------------本文大纲概述从 --config 开始op...
-
《k8s-1.13版本源码分析》-抢占调度
源码分析系列文章已经开源到github,地址如下:github:https://github.com/farmer-hutao/k8s-source-code-analysisgitbook:https://farmer-hutao.github.io/k8s-source-code-analysis抢占调度-本文大纲Pod prioritypreempt 入口preempt 实现SchedulingQueueFIFOPriorityQueuePodPreemptorxx.Algorithm.P...
-
《k8s-1.13版本源码分析》-调度优选
源码分析系列文章已经开源到github,地址如下:github:https://github.com/farmer-hutao/k8s-source-code-analysisgitbook:https://farmer-hutao.github.io/k8s-source-code-analysis本文大纲走近priority过程PrioritizeNodes整体流程ResultsOld Priority FunctionMap-ReduceCombine ScoresFun和Map-Redu...
-
《k8s-1.13版本源码分析》-调度预选
本系列文章已经开源到github:https://github.com/farmer-hutao/k8s-source-code-analysis预选过程预选流程predicate的并发一个node的predicatepredicates的顺序单个predicate执行过程具体的predicate函数1. 预选流程predicate过程从pkg/scheduler/core/generic_scheduler.go:389 findNodesThatFit()方法就算正式开始了,这...
-
《k8s-1.13版本源码分析》-调度器框架
本文原始地址(gitbook格式):https://farmer-hutao.github.io/k8s-source-code-analysis/core/scheduler/scheduler-framework.html本项目github地址:https://github.com/farmer-hutao/k8s-source-code-analysis写在前面调度器启动运行一个pod的调度流程潜入第三层前的一点逻辑1. 写在前面今天我们从pkg/scheduler/scheduler.g...
-
《k8s-1.13版本源码分析》- 测试环境搭建(k8s-1.13版本单节点环境搭建)
本文原始地址(gitbook格式):https://farmer-hutao.github.io/k8s-source-code-analysis/prepare/debug-environment.html本项目github地址:https://github.com/farmer-hutao/k8s-source-code-analysis1. 概述大家注意哦,不一定要先搭建好环境再看源码,大可以先看一个组件,感觉差不多理解了,想要run一把,想要改几行试试的时候回过头来搭建k8s环境。当然,...
-
《k8s-1.13版本源码分析》- Scheduler启动前逻辑
本文原始地址(gitbook格式):https://farmer-hutao.github.io/k8s-source-code-analysis/core/scheduler/before-scheduler-run.html本项目github地址:https://github.com/farmer-hutao/k8s-source-code-analysis概述cobra和maincobra是啥使用cobraScheduler的main1. 概述前面提到过scheduler程序可以分为三层,...
-
《k8s-1.13版本源码分析》- 调度器设计
1. 概述我们先整体了解一下Scheduler的设计原理,然后再看这些过程是如何用代码实现的。关于调度器的设计在官网有介绍,我下面结合官网给的说明,简化掉不影响理解的复杂部分,和大家介绍一下Scheduler的工作过程。英文还可以的小伙伴们可以看一下官网的介绍先:scheduler.md官网有一段描述如下:The Kubernetes scheduler runs as a process alongside the other master components such as the API...
-
consistent hash(一致性哈希算法)
一、产生背景今天咱不去长篇大论特别详细地讲解consistent hash,我争取用最轻松的方式告诉你consistent hash算法是什么,如果需要深入,Google一下~。举个栗子吧:比如有 N 个 cache 服务器,需要将一个object 映射到 N 个 cache 上,我们可以用类似下面的方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache 上:hash(object)%N比如object是“hello”,hash(object)是100,N为3,100%...
-
protobuf、LRU、sigleflight
失去了语法高量,更好阅读体验参见原文:https://www.cnblogs.com/cloudgeek/p/9497801.html今天咱一次讲3个吧,赶一下进度,好早点开始聊kubernetes!从groupcache的项目目录结构看,我们今天要学习groupcachepb、lru、singleflight这3个package:一、protobuf 这个目录咋一看有2个文件:go和proto后缀的。proto后缀的文件和protocol buffers有关,所以先看看protocol b...
-
cachetable分析
今天我们来看cachetable.go这个源码文件,除了前面介绍过的主要数据结构CacheTable外还有如下2个类型:下面先看剩下2个类型是怎么定义的:CacheItemPair非常简单,注释一句话讲的很清楚,是用来映射key到访问计数的 CacheItemPairList明显就是一个CacheItemPair组成的“列表”,在go中对应的就是切片,绑定到CacheItemPairList类型的方法有3个,Swap和Len太直观了,不再赘述,Less方法判断CacheItemPair...
-
groupcache源码解析-概览
接下来讲什么今天开始讲groupcache!Memcached大家应该都不陌生,官网的介绍是:Free & open source, high-performance, distributed memory object caching system(免费,开源,高性能的分布式内存对象缓存系统)。很多公司的产品都用到了Memcached,不过Memcached是用C语言开发的,我们的目的是提升Golang技能,所以这里我找了Golang版本的Memcached:groupcache来分析。gi...
-
写在最前面 - 《看懂每一行代码 - kubernetes》
我要写什么《看懂每一行代码 - kubernetes》会包含k8s整个项目的源码解析,考虑到门槛问题,在开始分析k8s之前我会通过一些更低难度的golang开源项目讲解来帮助大家提升golang编码技能;然后通过与k8s相关的一些项目的讲解,打通阻碍k8s学习的一些大障碍;最后集中火力,将kubernetes项目的整个源码吃透。总体来说,本系列计划分三步走完成源码层面掌握k8s的目标:golang技能提升k8s依赖技术k8s核心组件目前关于k8s应用的教程已经很多了,其中不乏相当优秀的文章,所以...
-
启航 - cache2go源码分析
一、概述 我们今天开始第一部分“golang技能提升”。这一块我计划分析3个项目,一个是很流行的golang源码阅读入门项目cache2go,接着是非常流行的memcache的go语言版groupcache,最后是docker项目中分出来的核心组件之一containerd,通过这3个项目的源码全解析来达到golang能力上一个台阶的目的。 在本系列教程的学习过程中,我希望你能够做到如下要求:如果你是一个go语言新手,在看下面的代码分析过程中你肯定会遇到一些自己陌生的编码方式、陌生的知识点,...