- 博客(57)
- 收藏
- 关注

原创 kubernetes/k8s驱逐机制总结篇
k8s的驱逐机制是指在某些场景下,如node节点notReady、node节点压力较大等,将pod从某个node节点驱逐掉,让pod的上层控制器重新创建出新的pod来重新调度到其他node节点。根据发起驱逐的组件,驱逐可以分为3类:由kubelet发起的驱逐、由kube-controller-manager发起的驱逐、由kube-scheduler发起的驱逐。
2023-08-27 15:57:54
2369
2

原创 一图读懂k8s informer client-go
informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。 ......
2022-06-19 10:27:50
786

原创 kubeadm工作原理-kubeadm init原理分析-kubeadm join原理分析
kubeadm工作原理-kubeadm init原理分析-kubeadm join原理分析。kubeadm是社区维护的Kubernetes集群一键部署利器,使用两条命令即可完成k8s集群中master节点以及node节点的部署,其底层原理是利用了k8s TLS bootstrap特性。
2022-03-27 16:16:25
4826

原创 kubernetes/k8s CNI分析-容器网络接口分析
kubernetes CRI分析-k8s CRI分析。kubernetes中有3个功能接口,分别是容器网络接口CNI、容器运行时接口CRI和容器存储接口CSI。本文会对CNI是什么、CNI系统架构做介绍,以及k8s对CNI进行相关操作来构建和删除pod网络进行分析
2021-08-22 10:52:30
1321
1

原创 kubernetes/k8s CRI分析-容器运行时接口分析
kubernetes CRI分析-k8s CRI分析。kubernetes中有3个功能接口,分别是容器网络接口CNI、容器运行时接口CRI和容器存储接口CSI。本文会对CRI是什么、为什么要有CRI、CRI系统架构做介绍,对CRI所涉及的k8s对象与组件进行介绍,以及k8s对CRI进行相关操作分析
2021-08-01 10:17:10
1443

原创 kubernetes/k8s CSI分析-容器存储接口分析
kubernetes CSI分析-k8s CSI分析。kubernetes中有3个功能接口,分别是容器网络接口CNI、容器运行时接口CRI和容器存储接口CSI。本文会对CSI是什么、为什么要有CSI、CSI系统架构做介绍,对CSI所涉及的k8s对象与组件进行介绍,以及k8s对CSI存储进行相关操作分析...
2021-07-24 16:43:51
2240

原创 kubernetes ceph-csi分析 目录导航
概述最近在做分布式存储ceph接入kubernetes,用的是csi这一套,在开发的过程中,自己也用有道云笔记做过一些ceph-csi相关的源码分析、知识总结之类的记录,刚好自己又萌生了发博的想法,后续准备加以完善,然后发出来大家互相学习,有什么错误的地方也希望大家指出,共同学习,共同进步。刚开始写博客,可能写的不好,有什么问题也希望大家可以指出。立个flag,以后每周更新一篇。导航链接(持续更新中)(1) k8s通过ceph-csi接入存储的概要分析...
2021-04-08 21:10:47
1662
4

原创 k8s通过ceph-csi接入存储的概要分析
ceph-csi分析,通过ceph-csi让k8s接入ceph存储,对所涉及的k8s对象与组件进行了简单的介绍,以及k8s对存储进行相关操作的流程分析,存储相关操作包括了存储创建、存储扩容、存储挂载、解除存储挂载以及存储删除操作。...
2021-04-08 20:59:57
2805
1
原创 k8s驱逐篇(7)-kube-controller-manager驱逐-taintManager源码分析
kcm污点驱逐,taintManager的主要功能为:当某个node被打上NoExecute污点后,其上面的pod如果不能容忍该污点,则taintManager将会驱逐这些pod,而新建的pod也需要容忍该污点才能调度到该node上;
2023-06-24 10:10:33
996
5
原创 k8s驱逐篇(6)-kube-controller-manager驱逐-NodeLifecycleController源码分析
kube-controller-manager驱逐主要依靠NodeLifecycleController以及其中的TaintManager;开启了污点驱逐:node上有NoExecute污点后,立马驱逐不能容忍污点的pod,对于能容忍该污点的pod,则等待pod上配置的污点容忍时间里的最小值后,pod会被驱逐;未开启污点驱逐:当node的ready Condition值为false或unknown且已经持续了一段时间时,对该node上的pod做驱逐操作;
2022-12-11 11:08:59
1291
原创 k8s驱逐篇(5)-kube-controller-manager驱逐
kube-controller-manager驱逐主要依靠NodeLifecycleController以及其中的TaintManager;开启了污点驱逐:node上有NoExecute污点后,立马驱逐不能容忍污点的pod,对于能容忍该污点的pod,则等待pod上配置的污点容忍时间里的最小值后,pod会被驱逐;未开启污点驱逐:当node的ready Condition值为false或unknown且已经持续了一段时间时,对该node上的pod做驱逐操作;
2022-09-15 20:48:32
1377
原创 k8s驱逐篇(4)-kube-scheduler抢占调度驱逐
kube-scheduler抢占调度驱逐概述:当一个高优先级的 Pod 调度失败后,该 Pod 并不会被“搁置”,而是会“挤走”某个 Node 上的一些低优先级的 Pod,这样一来就可以保证高优先级 Pod 会优先调度成功。抢占发生的原因,一定是一个高优先级的 pod 调度失败,我们称这个 pod 为“抢占者”,称被抢占的 pod 为“牺牲者”(victims)。
2022-09-03 10:36:11
628
原创 k8s驱逐篇(3)-kubelet节点压力驱逐-源码分析篇
kubelet节点压力驱逐-概述。kubelet监控集群节点的 CPU、内存、磁盘空间和文件系统的inode 等资源,根据kubelet启动参数中的驱逐策略配置,当这些资源中的一个或者多个达到特定的消耗水平,kubelet 可以主动地驱逐节点上一个或者多个pod,以回收资源,降低节点资源压力。 ...
2022-08-13 10:00:53
2739
原创 k8s驱逐篇(2)-kubelet节点压力驱逐
kubelet监控集群节点的 CPU、内存、磁盘空间和文件系统的inode 等资源,根据kubelet启动参数中的驱逐策略配置,当这些资源中的一个或者多个达到特定的消耗水平,kubelet 可以主动地驱逐节点上一个或者多个pod,以回收资源,降低节点资源压力。 ......
2022-07-31 10:36:36
1627
原创 k8s驱逐篇(1)-k8s QoS与pod驱逐
Kubernetes会根据pod的QoS级别来决定pod的调度、抢占调度和驱逐优先级,而且pod的QoS级别也影响oomkiller对杀死进程的选择。
2022-07-10 10:31:02
4039
原创 k8s client-go源码分析 informer源码分析(6)-Indexer源码分析
k8s informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。...
2022-06-05 10:02:36
564
原创 k8s client-go源码分析 informer源码分析(5)-Controller&Processor源码分析
k8s informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。
2022-05-22 10:28:47
487
2
原创 k8s client-go源码分析 informer源码分析(4)-DeltaFIFO源码分析
k8s informers k8s client-go 实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。
2022-05-15 10:12:38
498
原创 k8s client-go源码分析 informer源码分析(3)-Reflector源码分析
k8s informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。
2022-05-08 09:41:34
892
原创 k8s client-go源码分析 informer源码分析(2)-初始化与启动分析
k8s informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。
2022-04-23 09:35:42
1168
原创 k8s client-go源码分析 informer源码分析(1)-概要分析
informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。
2022-04-17 09:57:20
1351
原创 k8s TLS bootstrap解析-k8s TLS bootstrap流程分析
k8s TLS bootstrap功能就是让kubelet先使用一个预先商定好的低权限的bootstrap token连接到kube-apiserver,向kube-apiserver申请证书,然后kube-controller-manager给kubelet动态签署证书,后续kubelet都将通过动态签署的证书与kube-apiserver通信。
2022-04-04 10:26:46
2374
原创 kube-scheduler源码分析(3)-抢占调度分析
kube-scheduler组件是kubernetes中的核心组件之一,主要负责pod资源对象的调度工作,具体来说,kube-scheduler组件负责根据调度算法(包括预选算法和优选算法)将未调度的pod调度到合适的最优的node节点上。而优先级和抢占机制,解决的是 Pod 调度失败时该怎么办的问题。抢占发生的原因,一定是一个高优先级的 pod 调度失败,我们称这个 pod 为“抢占者”,称被抢占的 pod 为“牺牲者”(victims)。
2022-03-06 10:31:48
723
原创 kube-scheduler源码分析(2)-核心处理逻辑分析
kube-scheduler组件是kubernetes中的核心组件之一,主要负责pod资源对象的调度工作,具体来说,kube-scheduler组件负责根据调度算法(包括预选算法和优选算法)将未调度的pod调度到合适的最优的node节点上。
2022-02-27 11:00:35
2304
原创 kube-scheduler源码分析(1)-初始化与启动分析
kube-scheduler组件是kubernetes中的核心组件之一,主要负责pod资源对象的调度工作,具体来说,kube-scheduler组件负责根据调度算法(包括预选算法和优选算法)将未调度的pod调度到合适的最优的node节点上。
2022-02-20 10:34:00
1016
原创 kube-controller-manager源码分析 目录导航
k8s kubernetes kube-controller-manager源码分析,deployment controller源码分析,replicaset controller源码分析,daemonset controller源码分析,statefulset controller源码分析,endpoints controller源码分析,garbage collector源码分析
2022-01-22 10:41:56
529
原创 k8s daemonset controller源码分析
daemonset controller是 daemonset 资源对象的控制器,其通过对daemonset、pod、node、ControllerRevision四种资源的监听,当这四种资源发生变化时会触发 daemonset controller 对相应的daemonset资源进行调谐操作,从而完成daemonset在合适node上pod的创建、在不合适node上pod的删除、daemonset的滚动更新、daemonset状态status更新、旧版本daemonset清理等操作。
2021-12-19 10:22:14
469
1
原创 k8s statefulset controller源码分析
statefulset controller是kube-controller-manager组件中众多控制器中的一个,是 statefulset 资源的控制器,通过对statefulset、pod资源监听,当资源发生变化时会触发 statefulset controller 对相应的statefulset资源对象进行调谐操作,从而完成statefulset对于pod的创建、删除、更新、扩缩容、statefulset的滚动更新、statefulset状态status更新、旧版本statefulset清理等操作
2021-11-28 10:25:21
2152
原创 k8s endpoints controller源码分析
endpoints controller是kube-controller-manager组件中众多控制器中的一个,是 endpoints 资源的控制器,其通过对service、pod 2种资源的监听,当这2种资源发生变化时会触发 endpoints controller对相应的endpoints资源进行调谐操作,完成endpoints的创建更新
2021-11-14 09:41:22
927
原创 k8s replicaset controller源码分析(3)-expectations 机制分析
replicaset controller是kube-controller-manager组件中众多控制器中的一个,是 replicaset 资源对象的控制器,其通过对replicaset、pod 2种资源的监听,完成replicaset期望副本数的调谐。
2021-10-26 07:00:00
470
原创 k8s replicaset controller源码分析(2)-核心处理逻辑分析
replicaset controller是kube-controller-manager组件中众多控制器中的一个,是 replicaset 资源对象的控制器,其通过对replicaset、pod 2种资源的监听,完成replicaset期望副本数的调谐。
2021-10-25 07:00:00
613
原创 k8s replicaset controller源码分析(1)- 初始化与启动分析
replicaset controller是kube-controller-manager组件中众多控制器中的一个,是 replicaset 资源对象的控制器,其通过对replicaset、pod 2种资源的监听,完成replicaset期望副本数的调谐。
2021-10-24 14:26:17
3184
原创 k8s deployment controller源码分析
deployment controller是kube-controller-manager组件中众多控制器中的一个,是 deployment 资源对象的控制器,其通过对deployment、replicaset、pod三种资源的监听,当三种资源发生变化时会触发 deployment controller 对相应的deployment资源进行调谐操作,从而完成deployment的扩缩容、暂停恢复、更新、回滚、状态status更新、所属的旧replicaset清理等操作。
2021-09-25 10:09:05
606
原创 k8s garbage collector源码分析(2)-处理逻辑分析
k8s gc分析。Kubernetes garbage collector即垃圾收集器,存在于kube-controller-manger中,它负责回收kubernetes中的资源对象,监听资源对象事件,更新对象之间的依赖关系,并根据对象的删除策略来决定是否删除其关联对象。
2021-09-12 09:59:24
434
原创 k8s garbage collector源码分析(1)-启动分析
k8s gc分析。Kubernetes garbage collector即垃圾收集器,存在于kube-controller-manger中,它负责回收kubernetes中的资源对象,监听资源对象事件,更新对象之间的依赖关系,并根据对象的删除策略来决定是否删除其关联对象。
2021-09-12 09:56:23
441
原创 kubernetes/k8s CRI 分析-kubelet删除pod分析
kubernetes CRI分析-k8s CRI分析。kubelet删除pod分析。kubelet调用CRI删除pod分析。kubernetes中有3个功能接口,分别是容器网络接口CNI、容器运行时接口CRI和容器存储接口CSI。本文会对kubelet调用CRI删除pod分析。
2021-08-15 17:03:36
728
原创 kubernetes/k8s CRI分析-kubelet创建pod分析
kubernetes CRI分析-k8s CRI分析。kubelet创建pod分析。kubelet调用CRI创建pod分析。kubernetes中有3个功能接口,分别是容器网络接口CNI、容器运行时接口CRI和容器存储接口CSI。本文会对kubelet调用CRI创建pod分析。
2021-08-08 09:59:13
612
原创 external-resizer源码分析/pvc扩容分析
pvc扩容分析。pvc存储扩容分析。存储的扩容分为controller端操作与node端操作两大步骤,controller端操作由external-resizer来调用ceph完成,而node端操作由kubelet来完成,下面来分析下external-resizer中有关存储扩容的相关代码。...
2021-07-18 10:21:04
686
原创 external-attacher源码分析(2)-核心处理逻辑分析
ceph-csi分析-external-attacher分析。external-attacher属于external plugin中的一个,辅助csi plugin,共同完成了存储相关操作。external-attacher watch volumeAttachment对象,调用csi plugin做attach/dettach操作,修改volumeAttachment对象与pv对象。
2021-07-10 09:57:37
557
1
原创 external-attacher源码分析(1)-main方法与启动参数分析
ceph-csi分析-external-attacher分析。external-attacher属于external plugin中的一个,辅助csi plugin,共同完成了存储相关操作。external-attacher watch volumeAttachment对象,调用csi plugin做attach/dettach操作,修改volumeAttachment对象与pv对象。
2021-07-03 10:49:42
341
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人