摘要: k8s的驱逐机制是指在某些场景下,如node节点notReady、node节点压力较大等,将pod从某个node节点驱逐掉,让pod的上层控制器重新创建出新的pod来重新调度到其他node节点。这里也将kube-scheduler的抢占调度纳入到了驱逐的讨论范围内,因为当调度高优先级的pod时发现资源不足,会驱逐掉node节点上原有的低优先级的pod。 根据发起驱逐的组件,驱逐可以分为3类:由kubelet发起的驱逐、由kube-controller-manager发起的驱逐、由kube-scheduler发起的驱逐 阅读全文
posted @ 2023-11-05 10:20 良凯尔 阅读(1298) 评论(1) 推荐(1) 编辑
摘要: k8s client-go k8s informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。 阅读全文
posted @ 2022-06-26 10:30 良凯尔 阅读(2483) 评论(0) 推荐(1) 编辑
摘要: k8s kubernetes kube-controller-manager源码分析,deployment controller源码分析,replicaset controller源码分析,daemonset controller源码分析,statefulset controller源码分析,endpoints controller源码分析,garbage collector源码分析 阅读全文
posted @ 2022-01-27 09:54 良凯尔 阅读(732) 评论(0) 推荐(0) 编辑
摘要: kubernetes CRI分析-k8s CRI分析。kubernetes中有3个功能接口,分别是容器网络接口CNI、容器运行时接口CRI和容器存储接口CSI。本文会对CNI是什么、CNI系统架构做介绍,以及k8s对CNI进行相关操作来构建和删除pod网络进行分析 阅读全文
posted @ 2021-08-22 10:44 良凯尔 阅读(2595) 评论(1) 推荐(1) 编辑
摘要: kubernetes CRI分析-k8s CRI分析。kubernetes中有3个功能接口,分别是容器网络接口CNI、容器运行时接口CRI和容器存储接口CSI。本文会对CRI是什么、为什么要有CRI、CRI系统架构做介绍,对CRI所涉及的k8s对象与组件进行介绍,以及k8s对CRI进行相关操作分析 阅读全文
posted @ 2021-08-01 10:23 良凯尔 阅读(3339) 评论(1) 推荐(2) 编辑
摘要: kubernetes CSI分析-k8s CSI分析。kubernetes中有3个功能接口,分别是容器网络接口CNI、容器运行时接口CRI和容器存储接口CSI。本文会对CSI是什么、为什么要有CSI、CSI系统架构做介绍,对CSI所涉及的k8s对象与组件进行介绍,以及k8s对CSI存储进行相关操作分析 阅读全文
posted @ 2021-07-24 16:35 良凯尔 阅读(6724) 评论(3) 推荐(2) 编辑
摘要: 最近在做分布式存储ceph接入kubernetes,用的是csi这一套,在开发的过程中,自己也用有道云笔记做过一些ceph-csi相关的源码分析、知识总结之类的记录,刚好自己又萌生了发博的想法,后续准备加以完善,然后发出来大家互相学习,有什么错误的地方希望大家指出 阅读全文
posted @ 2021-05-15 17:45 良凯尔 阅读(3863) 评论(0) 推荐(2) 编辑
摘要: ceph-csi分析,通过ceph-csi让k8s接入ceph存储,对所涉及的k8s对象与组件进行了简单的介绍,以及k8s对存储进行相关操作的流程分析,存储相关操作包括了存储创建、存储扩容、存储挂载、解除存储挂载以及存储删除操作。 阅读全文
posted @ 2021-05-15 17:42 良凯尔 阅读(4119) 评论(0) 推荐(0) 编辑
摘要: taintManager的主要功能为:当某个node被打上NoExecute污点后,其上面的pod如果不能容忍该污点,则taintManager将会驱逐这些pod,而新建的pod也需要容忍该污点才能调度到该node上; 阅读全文
posted @ 2023-06-25 09:18 良凯尔 阅读(440) 评论(0) 推荐(0) 编辑
摘要: kube-controller-manager驱逐主要依靠NodeLifecycleController以及其中的TaintManager;开启了污点驱逐:node上有NoExecute污点后,立马驱逐不能容忍污点的pod,对于能容忍该污点的pod,则等待pod上配置的污点容忍时间里的最小值后,pod会被驱逐;未开启污点驱逐:当node的ready Condition值为false或unknown且已经持续了一段时间时,对该node上的pod做驱逐操作; 阅读全文
posted @ 2023-06-24 10:21 良凯尔 阅读(801) 评论(1) 推荐(0) 编辑
摘要: kube-controller-manager驱逐主要依靠NodeLifecycleController以及其中的TaintManager;开启了污点驱逐:node上有NoExecute污点后,立马驱逐不能容忍污点的pod,对于能容忍该污点的pod,则等待pod上配置的污点容忍时间里的最小值后,pod会被驱逐;未开启污点驱逐:当node的ready Condition值为false或unknown且已经持续了一段时间时,对该node上的pod做驱逐操作; 阅读全文
posted @ 2022-12-11 11:25 良凯尔 阅读(580) 评论(0) 推荐(0) 编辑
摘要: 优先级和抢占机制,解决的是 Pod 调度失败时该怎么办的问题。当一个高优先级的 Pod 调度失败后,该 Pod 并不会被“搁置”,而是会“挤走”某个 Node 上的一些低优先级的 Pod,这样一来就可以保证高优先级 Pod 会优先调度成功。抢占发生的原因,一定是一个高优先级的 pod 调度失败,我们称这个 pod 为“抢占者”,称被抢占的 pod 为“牺牲者”(victims)。 阅读全文
posted @ 2022-09-15 20:54 良凯尔 阅读(887) 评论(0) 推荐(0) 编辑
摘要: kubelet节点压力驱逐-源码分析篇。kubelet监控集群节点的 CPU、内存、磁盘空间和文件系统的inode 等资源,根据kubelet启动参数中的驱逐策略配置,当这些资源中的一个或者多个达到特定的消耗水平,kubelet 可以主动地驱逐节点上一个或者多个pod,以回收资源,降低节点资源压力。 阅读全文
posted @ 2022-09-03 10:41 良凯尔 阅读(2084) 评论(0) 推荐(0) 编辑
摘要: kubelet节点压力驱逐。kubelet监控集群节点的 CPU、内存、磁盘空间和文件系统的inode 等资源,根据kubelet启动参数中的驱逐策略配置,当这些资源中的一个或者多个达到特定的消耗水平,kubelet 可以主动地驱逐节点上一个或者多个pod,以回收资源,降低节点资源压力。 阅读全文
posted @ 2022-08-13 10:03 良凯尔 阅读(1473) 评论(0) 推荐(0) 编辑
摘要: QoS是Quality of Service的缩写,即服务质量。每个pod属于某一个QoS分类,而Kubernetes会根据pod的QoS级别来决定pod的调度、抢占调度和驱逐优先级,而且pod的QoS级别也影响oomkiller对杀死进程的选择。 阅读全文
posted @ 2022-07-31 10:39 良凯尔 阅读(1129) 评论(1) 推荐(0) 编辑
摘要: informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。 阅读全文
posted @ 2022-06-19 10:31 良凯尔 阅读(1328) 评论(1) 推荐(0) 编辑