Xu Blog

一生想做浪漫极客

    "Docker pull命令执行源码解析"

  "Docker pull命令执行源码解析"

Docker pull命令执行源码解析 由于需要分析镜像层之间的组织结构方式,我们需要对Docker pull拉取镜像层及拉取过程中镜像层之间组织结构方式的构建过程要有一定了解。 Docker根目录的分析 我们知道Docker的根目录为/var/lib/docker,其中和一个容器镜像相关的数据如下图 所示: 其中我们需要关系的信息主要有: layer-DigestID...

    "Kubelet启动源码分析"

  "kubernetes"

Kubelet启动及对Docker容器管理源码分析 Kubelet启动流程分析 当执行kubelet…命令后,会调用到cmd/kubelet/kubelet.go的main()函数,该函数如下,主要借助cobra.Command工具构建一个Kubelet命令结构,然后执行Execute(): func main() { rand.Seed(time.Now().UTC()....

    "K8S API规范约束"

  "kubernetes"

K8S API规范约束 该文档是面向那些想要深入理解K8S API结构的用户,和那些想要扩展K8S api的开发者,一个kubectl来使用资源的介绍文档可以在下一篇文档中看到概览,这一章主要介绍API的一些约束: Table of Contents K8S API的约束主要是为了简化客户端的开发并且确保配置机制可以被实现来持续工作在不同的用例 K8S API 的总体风格是满足RES...

    "kubernetes Code-Generator"

  "kubernetes"

k8s代码自动生成过程的解析(Code-Generator).md k8s越发展成为一个为分布式应用的平台,越多的项目将会在技术栈的更高的级别来使用提供的扩展点来构建软件。在k8s1.7中介绍的CRD作为初始版并逐渐提升为1.8的beta版,CRD是一个为原生构建的模块,可以解决很多用户场景的需求,尤其是那些实现了控制器模式的用户场景。此外,CRD非常容易创建和使用。 在K8S1.8中,...

    "APIServer和组件(kubelet)通信源码分析"

  "APIServer <=> Kubelet(组件)"

APIServer和组件(kubelet)通信源码分析 在前面两章源码分析中,第一章简单的介绍了kubectl从命令到给apiserver发送请求的过程,第二章则是介绍apiserver从启动到api注册完成路由信息的配置过程,这一张我们讲介绍APIServer是如何通过List-Watch机制和各组件进行通信的过程,这一章主要是针对kubelet的组件模块进行分析,其它组件可以类似分析。...

    "kubernetes API Server源码分析"

  "API Server源码分析"

api-server 源码分析 API Server在k8s中有着非常重要的作用,API-Server负责和etcd进行交互,etcd感觉就像是保存集群整体结构的状态信息数据中心(POD,NODE的信息等),k8s中的其它组件都不会和etcd进行交互,只有API Server可以和etcd进行交互,api-server具有如下功能: 整个集群管理的API接口:所有对集群进行的查询和...

    "kubernetes KubeCtl源码分析"

  "kubectl源码分析"

kubectl源码分析 这一章我们将从kubectl的命令发送到API Server的流程进行分析,我们知道K8S采用如下的架构进行对POD的控制和管理: kubectl初始化,添加各类命令行cobra.Command接口(Create,Update) 当执行某一具体的命令时,会使用工厂模式,首先Factory创建一个Builder 再对该Builder进行相关设置(相...

    "kubernetes POD对象"

  "kubernetes基础"

POD对象 POD是K8S最小的、管理、创建、计划的最小单元 什么是POD 一个POD相当于一个一个共享context的配置组,在同一个context下,应用可能还会有独立的cgroup隔离机制,一个Pod是一个容器环境下的”逻辑主机”,它可能包含一个或多个紧密相连的应用 *context可以理解为多个linux命名空间的联合,类似于一个独立的namespace环境 - PI...

    "kubernetes基本概念"

  "kubernetes基础"

Kubernetes基础概念 POD 所有容器均在Pod中运行,一个Pod可以承载一个或者多个相关的容器: 同一个POD中的容器部署在同一个物理机器上,并能够共享资源 一个Pod可以包含0个或多个磁盘卷组(volumes),这些卷组可以提供给一个容器或者被多个容器共享 用户可以自己创建并管理Pod,k8s将这些操作简化为两个操作: 基于相同的Pod配置文件部署多个...

    "Linux内核-内存管理"

  "内存管理"

内存管理 页框管理 页描述符 内核必须记录每个页框当前的状态。内核必须能区分哪些页框属于进程的页,哪些页框包含内核代码或内核数据等等信息。 所以我们使用page 的页描述符来记录每个页框的这些信息 所有的页描述符都存放在mem_map数组中,每个描述符的长度为32字节 一些与页描述符相关的宏 virt_to_page(addr):产生线性地址add...