kubelet之volume manager源码分析】的更多相关文章

kubernetes ceph-csi分析目录导航 基于tag v1.17.4 https://github.com/kubernetes/kubernetes/releases/tag/v1.17.4 概述 volume manager存在于kubelet中,主要是管理存储卷的attach/detach(与AD controller作用相同,通过kubelet启动参数控制哪个组件来做该操作,后续会详细介绍).mount/umount等操作. 简介 容器的存储挂载分为两大步: (1)attach…
kubelet节点压力驱逐-概述 kubelet监控集群节点的 CPU.内存.磁盘空间和文件系统的inode 等资源,根据kubelet启动参数中的驱逐策略配置,当这些资源中的一个或者多个达到特定的消耗水平,kubelet 可以主动地驱逐节点上一个或者多个pod,以回收资源,降低节点资源压力. 驱逐信号 节点上的memory.nodefs.pid等资源都有驱逐信号,kubelet通过将驱逐信号与驱逐策略进行比较来做出驱逐决定: 驱逐策略 kubelet节点压力驱逐包括了两种,软驱逐和硬驱逐: 软…
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 kubelet信息量是很大的,通过我这一篇文章肯定是讲不全的,大家可以根据自己的情况到Reference或文章的链接补录自己缺失的知识. kubelet 主要功能 在kubernetes集群中,每个Node节点都会启动kubelet进程,用来处理Master节点下发到本节点的任务,管理Pod和其中的容器. pod 管理 Kubelet 以 PodSpec 的方式工作…
kubelet注册csi driver分析 kubelet注册csi driver的相关功能代码与kubelet的pluginManager有关,所以接下来对pluginManager进行分析.分析将分为pluginManager的初始化分析以及pluginManager的运行(处理逻辑)分析. 基于tag v1.17.4 https://github.com/kubernetes/kubernetes/releases/tag/v1.17.4 kubelet注册csi driver的原理 ku…
上一篇说到kublet如何启动一个pod,本篇讲述如何关闭一个Pod,引用一段来自官方文档介绍pod的生命周期的话 你使用 kubectl 工具手动删除某个特定的 Pod,而该 Pod 的体面终止限期是默认值(30 秒). API 服务器中的 Pod 对象被更新,记录涵盖体面终止限期在内 Pod 的最终死期,超出所计算时间点则认为 Pod 已死(dead). 如果你使用 kubectl describe 来查验你正在删除的 Pod,该 Pod 会显示为 "Terminating" (正…
kubernetes ceph-csi分析目录导航 Node Driver Registrar分析 node-driver-registrar是一个sidecar容器,通过Kubelet的插件注册机制将CSI plugin(csi driver,两个名词意义一样)注册到Kubelet,让kubelet做volume的mount/umount操作时知道怎么调用相应的csi plugin. Node Driver Registrar的内容相对简单,将在本文中对其作用.源码.组件间调用逻辑等进行分析.…
一.heapster简介 什么是Heapster? Heapster是容器集群监控和性能分析工具,天然的支持Kubernetes和CoreOS.Kubernetes有个出名的监控agent---cAdvisor.在每个kubernetes Node上都会运行cAdvisor,它会收集本机以及容器的监控数据(cpu,memory,filesystem,network,uptime).在较新的版本中,K8S已经将cAdvisor功能集成到kubelet组件中.每个Node节点可以直接进行web访问.…
目录 Envoy 源码分析--network L4 filter manager FilterManagerImpl addWriteFilter addReadFilter addFilter initializeReadFilters onRead onWrite Envoy 源码分析--network L4 filter manager 申明:本文的 Envoy 源码分析基于 Envoy1.10.0. 承接Envoy 源码分析--network,上次 network 只分析到 L4 过滤,…
kubernetes ceph-csi分析目录导航 存储的扩容分为controller端操作与node端操作两大步骤,controller端操作由external-resizer来调用ceph完成,而node端操作由kubelet来完成,下面来分析下kubelet中有关存储扩容的相关代码. 基于tag v1.17.4 https://github.com/kubernetes/kubernetes/releases/tag/v1.17.4 controller端存储扩容作用 将底层存储扩容,如c…
前言 前文介绍Pod无论是启动时还是关闭时,处理是由kubelet的主循环syncLoop开始执行逻辑,而syncLoop的入参是一条传递变更Pod的通道,显然syncLoop往后的逻辑属于消费者一方,如何发现Pod的变更往通道里面传递变更消息的一方目前还没明朗,故本次来看一下kubelet是如何发现Pod的变更的. 调用链回溯 syncLoop的通道参数updates是经过在startKubelet函数(代码位于/cmd/kubelet/app/server.go)传入, func start…
更多 ceph-csi 其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 摘要 ceph-csi分析-external-attacher源码分析.external-attacher属于external plugin中的一个,辅助csi plugin组件,共同完成了存储相关操作.external-attacher watch volumeAttachment对象,然后调用csi plugin来做attach/dettach操作,并修改volumeAttachme…
kubernetes ceph-csi分析目录导航 概述 kube-controller-manager组件中,有两个controller与存储相关,分别是PV controller与AD controller. 基于tag v1.17.4 https://github.com/kubernetes/kubernetes/releases/tag/v1.17.4 AD Cotroller分析 AD Cotroller作用 AD Cotroller全称Attachment/Detachment 控…
kubernetes ceph-csi分析目录导航 基于tag v2.1.1 https://github.com/kubernetes-csi/external-attacher/releases/tag/v2.1.1 external-attacher external-attacher属于external plugin中的一个.下面我们先来回顾一下external plugin以及csi系统结构. external plugin external plugin包括了external-pro…
kubernetes ceph-csi分析目录导航 基于tag v0.5.0 https://github.com/kubernetes-csi/external-resizer/releases/tag/v0.5.0 存储扩容过程 存储扩容分为controller端和node端两步,先进行controller端(external-resizer触发)的扩容,然后再进行node端(kubelet触发)扩容(当volumemode是block,则不用进行node端扩容操作),存储的扩容操作才算完成…
listen = flag.String("listen", "/var/run/frakti.sock", "...") hyperEndpoint = flag.String("hyper-endpoint", "127.0.0.1:8080", "...") streamingServerPort = flag.String("streaming-server-port&…
kubernetes集群三步安装 kube-scheduler源码分析 关于源码编译 我嫌弃官方提供的编译脚本太麻烦,所以用了更简单粗暴的方式编译k8s代码,当然官方脚本在编译所有项目或者夸平台编译以及realse时还是挺有用的. 在容器中编译: docker run -v /work/src/k8s.io/kubernetes:/go/src/k8s.io/kubernetes golang:1.11.2 bash 在容器中可以保证环境干净 进入bash后直接进入kube-scheduler的…
k8s离线安装包 三步安装,简单到难以置信 kubeadm源码分析 说句实在话,kubeadm的代码写的真心一般,质量不是很高. 几个关键点来先说一下kubeadm干的几个核心的事: kubeadm 生成证书在/etc/kubernetes/pki目录下 kubeadm 生成static pod yaml配置,全部在/etc/kubernetes/manifasts下 kubeadm 生成kubelet配置,kubectl配置等 在/etc/kubernetes下 kubeadm 通过clien…
更多 ceph-csi 其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 ceph-csi源码分析(8)-cephfs driver分析 当ceph-csi组件启动时指定的driver type为cephfs时,会启动cephfs driver相关的服务.然后再根据controllerserver.nodeserver的参数配置,决定启动ControllerServer与IdentityServer,或NodeServer与IdentityServer. 基于…
更多 ceph-csi 其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 ceph-csi源码分析(6)-rbd driver-nodeserver分析(下) 当ceph-csi组件启动时指定的driver type为rbd时,会启动rbd driver相关的服务.然后再根据controllerserver.nodeserver的参数配置,决定启动ControllerServer与IdentityServer,或NodeServer与IdentityServe…
更多ceph-csi其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 概述 接下来将对external-provisioner组件进行源码分析. 在external-provisioner组件中,rbd与cephfs共用一套处理逻辑,也即同一套代码,同时适用于rbd存储与cephfs存储. external-provisioner组件的源码分析分为三部分: (1)主体处理逻辑分析: (2)main方法与Leader选举分析: (3)组件启动参数分析. 基于ta…
更多ceph-csi其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 ceph-csi组件源码分析(1)-组件介绍与部署yaml分析 基于tag v3.0.0 https://github.com/ceph/ceph-csi/releases/tag/v3.0.0 概述 ceph-csi扩展各种存储类型的卷的管理能力,实现第三方存储ceph的各种操作能力与k8s存储系统的结合.调用第三方存储ceph的接口或命令,从而提供ceph数据卷的创建/删除.挂载/解除挂…
更多ceph-csi其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 ceph-csi源码分析(4)-rbd driver-controllerserver分析 当ceph-csi组件启动时指定的driver type为rbd时,会启动rbd driver相关的服务.然后再根据controllerserver.nodeserver的参数配置,决定启动ControllerServer与IdentityServer,或NodeServer与IdentityServ…
更多 ceph-csi 其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 ceph-csi源码分析(5)-rbd driver-nodeserver分析(上) 当ceph-csi组件启动时指定的driver type为rbd时,会启动rbd driver相关的服务.然后再根据controllerserver.nodeserver的参数配置,决定启动ControllerServer与IdentityServer,或NodeServer与IdentityServe…
文主要说明ABP中后台工作者模块(BackgroundWorker)的实现方式,和后台工作模块(BackgroundJob).ABP通过BackgroundWorkerManager来管理BackgroundJobManager,然后通过BackgroundJobManager来管理BackgroundJob.BackgroundJob就代表一个真正的后台任务. 这两个模块是在ABPKernelModule的PostInitialize完成初始化的. 后台工作者模块 首先浏览下后台工作者模块所涉…
ABP以AOP的方式实现UnitOfWork功能.通过UnitOfWorkRegistrar将UnitOfWorkInterceptor在某个类被注册到IOCContainner的时候,一并添加到该类在容器中对应的ComponentModel的Interceptors集合中.总结一句话就是,UOW的功能是通过自定义Castle拦截器来实现的.本文主要介绍ABP核心框架中的UnitOfWork的实现,后续会分别介绍ABP其他模块是如何具体实现IUnitOfWork的 如图,AbpKernelMod…
Feature是什么?Feature就是对function的分类方法,其与function的关系就比如Role和User的关系一样. ABP中Feature具有以下属性: 其中最重要的属性是name,用以表示feature的Identity,一个feature一个name. 一个Feature可以有一组子Features,从而构成Feature树. FeatureDictionary: 其本身继承自Dictionary.其作用就是把一个Feature及其Child Features从树状结构加载…
更多MyCat源码分析,请戳MyCat源码分析系列 MyCat配置信息 除了一些默认的配置参数,大多数的MyCat配置信息是通过读取若干.xml/.properties文件获取的,主要包括: 1)server.xml:系统和用户相关配置 2)schema.xml:虚拟库.表.数据节点配置等 3)rule.xml:分片规则设置 4)cacheservice.properties:缓存相关设置 5)dnindex.properties:datahost主从切换配置文件 6)sequence_conf…
1.spring-core概览 spring-core是spring框架的基石,它为spring框架提供了基础的支持. spring-core从源码上看,分为6个package,分别是asm,cglib,core,lang,objenesis和util. 1.1 asm 关于asm的内幕参见博客: spring源码分析之spring-core asm概述 1.2 cglib 关于cglib的内幕参见博客 cglib源码分析--转 1.3 core 1.4 lang 四个注解接口 /** * In…
本章简言 上一章笔者讲到关于Dispatcher类的执行action功能,知道了关于执行action需要用到的信息.而本章将会讲到的内容也跟Dispatcher类有关系.那就是配置管理中的ContainerProvider类.我们都知道在struts2启动的时候,struts2会去加载对应的配置文件.如struts.xml文件等.如果笔者没有记错的话.在<Struts2 源码分析——调结者(Dispatcher)之准备工作>的章节里面讲到过关于ConfigurationManager类的一些知…
上一篇分析了BeanFactory体系的2个类,SimpleAliasRegistry和DefaultSingletonBeanRegistry——Spring源码分析——BeanFactory体系之抽象类.类分析(一),今天继续分析. 一.工厂Bean注册支持——FactoryBeanRegistrySupport 废话不多说,直接看我注释的源码: /* * Copyright 2002-2012 the original author or authors. * * Licensed und…