良凯尔
码龄10年
关注
提问 私信
  • 博客:63,909
    社区:44
    63,953
    总访问量
  • 57
    原创
  • 372,744
    排名
  • 82
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2015-05-05
博客简介:

良凯尔的博客

查看详细资料
个人成就
  • 获得46次点赞
  • 内容获得23次评论
  • 获得163次收藏
  • 代码片获得240次分享
创作历程
  • 2篇
    2023年
  • 19篇
    2022年
  • 36篇
    2021年
成就勋章
TA的专栏
  • kubernetes
    57篇
  • 源码分析
    56篇
  • pod驱逐
    8篇
  • kubelet
    1篇
  • ceph-csi
    22篇
  • CSI
    1篇
  • client-go
    7篇
  • kubeadm
    2篇
  • kube-scheduler
    3篇
  • kube-controller-manager
    10篇
  • CNI
    1篇
  • CRI
    3篇
兴趣领域 设置
  • 运维
    容器devops自动化kubernetes
  • 服务器
    linux
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

344人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

kubernetes/k8s驱逐机制总结篇

k8s的驱逐机制是指在某些场景下,如node节点notReady、node节点压力较大等,将pod从某个node节点驱逐掉,让pod的上层控制器重新创建出新的pod来重新调度到其他node节点。根据发起驱逐的组件,驱逐可以分为3类:由kubelet发起的驱逐、由kube-controller-manager发起的驱逐、由kube-scheduler发起的驱逐。
原创
发布博客 2023.08.27 ·
2224 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

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

kcm污点驱逐,taintManager的主要功能为:当某个node被打上NoExecute污点后,其上面的pod如果不能容忍该污点,则taintManager将会驱逐这些pod,而新建的pod也需要容忍该污点才能调度到该node上;
原创
发布博客 2023.06.24 ·
909 阅读 ·
0 点赞 ·
5 评论 ·
0 收藏

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 ·
1261 阅读 ·
1 点赞 ·
1 评论 ·
3 收藏

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 ·
1337 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

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

kube-scheduler抢占调度驱逐概述:当一个高优先级的 Pod 调度失败后,该 Pod 并不会被“搁置”,而是会“挤走”某个 Node 上的一些低优先级的 Pod,这样一来就可以保证高优先级 Pod 会优先调度成功。抢占发生的原因,一定是一个高优先级的 pod 调度失败,我们称这个 pod 为“抢占者”,称被抢占的 pod 为“牺牲者”(victims)。
原创
发布博客 2022.09.03 ·
615 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

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

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

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

kubelet监控集群节点的 CPU、内存、磁盘空间和文件系统的inode 等资源,根据kubelet启动参数中的驱逐策略配置,当这些资源中的一个或者多个达到特定的消耗水平,kubelet 可以主动地驱逐节点上一个或者多个pod,以回收资源,降低节点资源压力。 ......
原创
发布博客 2022.07.31 ·
1557 阅读 ·
1 点赞 ·
0 评论 ·
6 收藏

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

Kubernetes会根据pod的QoS级别来决定pod的调度、抢占调度和驱逐优先级,而且pod的QoS级别也影响oomkiller对杀死进程的选择。
原创
发布博客 2022.07.10 ·
3417 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

一图读懂k8s informer client-go

informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。 ......
原创
发布博客 2022.06.19 ·
740 阅读 ·
8 点赞 ·
0 评论 ·
4 收藏

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

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

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

k8s informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。
原创
发布博客 2022.05.22 ·
452 阅读 ·
0 点赞 ·
2 评论 ·
1 收藏

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

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

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

k8s informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。
原创
发布博客 2022.05.08 ·
843 阅读 ·
3 点赞 ·
0 评论 ·
4 收藏

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

k8s informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。
原创
发布博客 2022.04.23 ·
1122 阅读 ·
4 点赞 ·
0 评论 ·
3 收藏

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

informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。
原创
发布博客 2022.04.17 ·
1297 阅读 ·
3 点赞 ·
0 评论 ·
6 收藏

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 ·
2340 阅读 ·
1 点赞 ·
0 评论 ·
9 收藏

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

kubeadm工作原理-kubeadm init原理分析-kubeadm join原理分析。kubeadm是社区维护的Kubernetes集群一键部署利器,使用两条命令即可完成k8s集群中master节点以及node节点的部署,其底层原理是利用了k8s TLS bootstrap特性。
原创
发布博客 2022.03.27 ·
4709 阅读 ·
4 点赞 ·
0 评论 ·
10 收藏

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

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

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

kube-scheduler组件是kubernetes中的核心组件之一,主要负责pod资源对象的调度工作,具体来说,kube-scheduler组件负责根据调度算法(包括预选算法和优选算法)将未调度的pod调度到合适的最优的node节点上。
原创
发布博客 2022.02.27 ·
2277 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

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

kube-scheduler组件是kubernetes中的核心组件之一,主要负责pod资源对象的调度工作,具体来说,kube-scheduler组件负责根据调度算法(包括预选算法和优选算法)将未调度的pod调度到合适的最优的node节点上。
原创
发布博客 2022.02.20 ·
988 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏
加载更多