自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 2017

原创 一图读懂k8s informer client-go

informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。 ......

2022-06-19 10:27:50 662

原创 kubeadm工作原理-kubeadm init原理分析-kubeadm join原理分析

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

2022-03-27 16:16:25 4603

原创 kubernetes/k8s CNI分析-容器网络接口分析

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

2021-08-22 10:52:30 1192 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 1316

原创 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 2059

原创 kubernetes ceph-csi分析 目录导航

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

2021-04-08 21:10:47 1485 4

原创 k8s通过ceph-csi接入存储的概要分析

ceph-csi分析,通过ceph-csi让k8s接入ceph存储,对所涉及的k8s对象与组件进行了简单的介绍,以及k8s对存储进行相关操作的流程分析,存储相关操作包括了存储创建、存储扩容、存储挂载、解除存储挂载以及存储删除操作。...

2021-04-08 20:59:57 2635 1

原创 k8s驱逐篇(7)-kube-controller-manager驱逐-taintManager源码分析

kcm污点驱逐,taintManager的主要功能为:当某个node被打上NoExecute污点后,其上面的pod如果不能容忍该污点,则taintManager将会驱逐这些pod,而新建的pod也需要容忍该污点才能调度到该node上;

2023-06-24 10:10:33 716 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 1153 1

原创 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 1252

原创 k8s驱逐篇(4)-kube-scheduler抢占调度驱逐

kube-scheduler抢占调度驱逐概述:当一个高优先级的 Pod 调度失败后,该 Pod 并不会被“搁置”,而是会“挤走”某个 Node 上的一些低优先级的 Pod,这样一来就可以保证高优先级 Pod 会优先调度成功。抢占发生的原因,一定是一个高优先级的 pod 调度失败,我们称这个 pod 为“抢占者”,称被抢占的 pod 为“牺牲者”(victims)。

2022-09-03 10:36:11 571

原创 k8s驱逐篇(3)-kubelet节点压力驱逐-源码分析篇

kubelet节点压力驱逐-概述。kubelet监控集群节点的 CPU、内存、磁盘空间和文件系统的inode 等资源,根据kubelet启动参数中的驱逐策略配置,当这些资源中的一个或者多个达到特定的消耗水平,kubelet 可以主动地驱逐节点上一个或者多个pod,以回收资源,降低节点资源压力。 ...

2022-08-13 10:00:53 2391

原创 k8s驱逐篇(2)-kubelet节点压力驱逐

kubelet监控集群节点的 CPU、内存、磁盘空间和文件系统的inode 等资源,根据kubelet启动参数中的驱逐策略配置,当这些资源中的一个或者多个达到特定的消耗水平,kubelet 可以主动地驱逐节点上一个或者多个pod,以回收资源,降低节点资源压力。 ......

2022-07-31 10:36:36 1447

原创 k8s驱逐篇(1)-k8s QoS与pod驱逐

Kubernetes会根据pod的QoS级别来决定pod的调度、抢占调度和驱逐优先级,而且pod的QoS级别也影响oomkiller对杀死进程的选择。

2022-07-10 10:31:02 3151

原创 k8s client-go源码分析 informer源码分析(6)-Indexer源码分析

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

2022-06-05 10:02:36 487

原创 k8s client-go源码分析 informer源码分析(5)-Controller&Processor源码分析

k8s informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。

2022-05-22 10:28:47 412 2

原创 k8s client-go源码分析 informer源码分析(4)-DeltaFIFO源码分析

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

2022-05-15 10:12:38 437

原创 k8s client-go源码分析 informer源码分析(3)-Reflector源码分析

k8s informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。

2022-05-08 09:41:34 768

原创 k8s client-go源码分析 informer源码分析(2)-初始化与启动分析

k8s informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。

2022-04-23 09:35:42 1059

原创 k8s client-go源码分析 informer源码分析(1)-概要分析

informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。

2022-04-17 09:57:20 1218

原创 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 2254

原创 kube-scheduler源码分析(3)-抢占调度分析

kube-scheduler组件是kubernetes中的核心组件之一,主要负责pod资源对象的调度工作,具体来说,kube-scheduler组件负责根据调度算法(包括预选算法和优选算法)将未调度的pod调度到合适的最优的node节点上。而优先级和抢占机制,解决的是 Pod 调度失败时该怎么办的问题。抢占发生的原因,一定是一个高优先级的 pod 调度失败,我们称这个 pod 为“抢占者”,称被抢占的 pod 为“牺牲者”(victims)。

2022-03-06 10:31:48 563

原创 kube-scheduler源码分析(2)-核心处理逻辑分析

kube-scheduler组件是kubernetes中的核心组件之一,主要负责pod资源对象的调度工作,具体来说,kube-scheduler组件负责根据调度算法(包括预选算法和优选算法)将未调度的pod调度到合适的最优的node节点上。

2022-02-27 11:00:35 2239

原创 kube-scheduler源码分析(1)-初始化与启动分析

kube-scheduler组件是kubernetes中的核心组件之一,主要负责pod资源对象的调度工作,具体来说,kube-scheduler组件负责根据调度算法(包括预选算法和优选算法)将未调度的pod调度到合适的最优的node节点上。

2022-02-20 10:34:00 929

原创 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 498

原创 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 423 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 2070

原创 k8s endpoints controller源码分析

endpoints controller是kube-controller-manager组件中众多控制器中的一个,是 endpoints 资源的控制器,其通过对service、pod 2种资源的监听,当这2种资源发生变化时会触发 endpoints controller对相应的endpoints资源进行调谐操作,完成endpoints的创建更新

2021-11-14 09:41:22 811

原创 k8s replicaset controller源码分析(3)-expectations 机制分析

replicaset controller是kube-controller-manager组件中众多控制器中的一个,是 replicaset 资源对象的控制器,其通过对replicaset、pod 2种资源的监听,完成replicaset期望副本数的调谐。

2021-10-26 07:00:00 411

原创 k8s replicaset controller源码分析(2)-核心处理逻辑分析

replicaset controller是kube-controller-manager组件中众多控制器中的一个,是 replicaset 资源对象的控制器,其通过对replicaset、pod 2种资源的监听,完成replicaset期望副本数的调谐。

2021-10-25 07:00:00 544

原创 k8s replicaset controller源码分析(1)- 初始化与启动分析

replicaset controller是kube-controller-manager组件中众多控制器中的一个,是 replicaset 资源对象的控制器,其通过对replicaset、pod 2种资源的监听,完成replicaset期望副本数的调谐。

2021-10-24 14:26:17 3049

原创 k8s deployment controller源码分析

deployment controller是kube-controller-manager组件中众多控制器中的一个,是 deployment 资源对象的控制器,其通过对deployment、replicaset、pod三种资源的监听,当三种资源发生变化时会触发 deployment controller 对相应的deployment资源进行调谐操作,从而完成deployment的扩缩容、暂停恢复、更新、回滚、状态status更新、所属的旧replicaset清理等操作。

2021-09-25 10:09:05 532

原创 k8s garbage collector源码分析(2)-处理逻辑分析

k8s gc分析。Kubernetes garbage collector即垃圾收集器,存在于kube-controller-manger中,它负责回收kubernetes中的资源对象,监听资源对象事件,更新对象之间的依赖关系,并根据对象的删除策略来决定是否删除其关联对象。

2021-09-12 09:59:24 393

原创 k8s garbage collector源码分析(1)-启动分析

k8s gc分析。Kubernetes garbage collector即垃圾收集器,存在于kube-controller-manger中,它负责回收kubernetes中的资源对象,监听资源对象事件,更新对象之间的依赖关系,并根据对象的删除策略来决定是否删除其关联对象。

2021-09-12 09:56:23 388

原创 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 643

原创 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 476

原创 external-resizer源码分析/pvc扩容分析

pvc扩容分析。pvc存储扩容分析。存储的扩容分为controller端操作与node端操作两大步骤,controller端操作由external-resizer来调用ceph完成,而node端操作由kubelet来完成,下面来分析下external-resizer中有关存储扩容的相关代码。...

2021-07-18 10:21:04 488

原创 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 459 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 307

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除