关于 K8s informer 的基本概念与原理
以SchedulerServer为例 SchedulerServer初始化了一个PodInformer,并启动、等待同步。查看一下这个标准流程。 s.PodInformer = factory.NewPodInformer(client, 0), go s.PodInformer.Informer().Run(stop) controller.WaitForCacheSync("sche...
以SchedulerServer为例 SchedulerServer初始化了一个PodInformer,并启动、等待同步。查看一下这个标准流程。 s.PodInformer = factory.NewPodInformer(client, 0), go s.PodInformer.Informer().Run(stop) controller.WaitForCacheSync("sche...
优先级队列是常用的数据结构,区别于 FIFO 先进先出队列,优先级队列中的元素都具有优先级关系,出队时需要按照优先级顺序出队。元素的优先级是自定义的,可以按照时间、大小等。 这里还有一个问题,为什么我们需要优先级队列,我们直接把所有元素都排序不就好了吗,按照排序后的顺序进行出队。这么说也没错,但有些场景还是用优先级队列比较合适,比如说我们不需要处理所有的元素。假设我们有 n 个元素(n 非...
目录 概述 扩展点 队列排序(Queue sort) 预过滤(Pre-filter) 过滤 (Filter) Post-filter 计分(Scoring) Normalize scoring 预留(Reserve) Permit Approving a Pod b...
这部分内容是对一篇英文博客的理解,对涉及到的一些知识点进行了拓展,原文地址为: GO MEMORY MANAGEMENT 理解VSZ与RSS 以下面为例,VSZ以及RSS的单位都是KB: root@z-Latitude:~# ps -u --pid 4435 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME ...
"cpu与mem的request与limit"
这部分关注三个问题 K8s 是如何对 cpu 和 mem 做资源限制的,涉及到的是 cgroup 的东西 pod 层面的 cgroup 存在的意义,可能是除 container 以外的本 pod 使用的资源 best effort/burstable/guaranteed 三者存在的意义 首先从观察现象出发,然后试图解释现象 分别介绍这三部分 K8s是如何做资源限制的 这...
"K8s 中的设计模式"
K8s 默认调度器 genericscheduler 中判断每个 node 是否符合调度条件是并行执行的,具体是通过下面函数: workqueue.Parallelize(16, len(nodes), checkNode) 该函数第一个参数是并行粒度,最多起的 goroutine 的数目;第二个参数是所有节点的个数(理解为任务数),第三个参数是对每个 node 执行的函数,即具体的任务,...
在《gRPC 示例:实现发布订阅模式》中,介绍了 gRPC 的一些使用,在本文中希望介绍一些 protobuf 的一些语法,希望能覆盖工作中的一些 case,做到即查即用,同时对 protobuf 有进一步的认识。 鉴于之前做 K8s 存储比较多,这里定了个小目标,就是理解 csi.proto 中的语法,csi 项目的地址为 container-storage-interface/spec...
很多协议的标准都是用 gRPC 定义的,对 gRPC 不了解,在理解这些协议的时候也很费劲,做一个简单的 gRPC 入门,主要参考《官方文档》。 gPRC是什么 在 gRPC 框架下,客户端应用可以像调用本地方法一样直接调用另一台不同的机器上服务端应用的方法(RPC 定义),基于此能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,...
kubelet 比较庞大,涉及的东西很多,相互之间关联性也不强,目前还没有了解每个模块的能力,因此只能做一个概述。以后在这个提纲的基础上再深入研究某一模块。kubelet的启动流程以及参数初始化不会涉及,主要是每个管理器的初始化过程,以及kubelet的同步过程。基于的代码是k8s 1.9。 初始化 初始化的代码在pkg/kubelet/kubelet.go文件,函数为NewMai...
IPtables 这个东西每次都花时间去看,然而真正排查问题的时候,每次都不懂了,关键是实践总结的太少,纸上得来终觉浅,绝知此事要躬行。本文主要参考《Kubernetes 网络权威指南》。 IPtables iptables 的底层实现是 netfilter,netfilter 是Linux内核2.4版引入的一个子系统,它作为一个通用的、抽象的框架,提供一整套 hook 函数的管理机制,使...