首页 > 编程语言 >Deploy扩缩容源码分析

Deploy扩缩容源码分析

时间:2023-05-07 11:11:43浏览次数:54  
标签:函数 Deploy deployment 扩缩容 controller 源码 Deployment

k8s v1.15.0

Informer监听

作为Deployment资源控制器,DeploymentController通过DeploymentInformer、ReplicaSetInformer、PodInformer来监听事件。

cmd/kube-controller-manager/app/apps.go
startDeploymentController函数

pkg/controller/deployment/deployment_controller.go
NewDeploymentController函数
实例化控制器时通过Informer来监听事件

扩缩容Deployment

pkg/controller/deployment/deployment_controller.go
NewDeploymentController函数
更新Deployment

updateDeployment函数
当前Deployment对象入队列

协程每隔1s处理队列元素,最终调用syncDeployment函数

syncDeployment函数
当执行scale操作时,首先会通过isScalingEvent方法判断是否为扩缩容操作,然后通过dc.sync方法来执行实际的扩缩容动作。

pkg/controller/deployment/sync.go
isScalingEvent函数
判断rs要求的Pod数量是否和Deployment Pod数量期望值相等(单纯扩缩容deploy不会产生新的rs)

扩容

缩容

不同于滚动更新

pkg/controller/deployment/sync.go
scaleReplicaSet函数
把rs副本数设置成目标值

参考资料

deployment controller 源码分析

源码分析 kubernetes deployment controller 的设计实现

标签:函数,Deploy,deployment,扩缩容,controller,源码,Deployment
From: https://www.cnblogs.com/WJQ2017/p/17379034.html

相关文章

  • Python flask成绩管理系统(课设、毕设、学习、源码下载)
    Pythonflask成绩管理系统后端:Python flask数据库:MySQL前端:html css js bootstrap等涉及功能:登录,登出,搜索,分类,排序,成绩管理,学生管理,班级管理,课程管理,数据统计分析,可视化图表 源码下载和功能展示:链接:https://pan.baidu.com/s/1D9cHH4Cy2jh6hgj3ZAWaDQ?pwd=q8le......
  • java基于ssm+vue的旅游管理系统、旅游资源网站、旅游网站管理系统,附源码+数据库+文档+
    1、项目介绍旅游资源网站的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、用户管理、景点信息管理、购票信息管理、酒店信息管理、客房类型管理、客房信息管理、客房预订管理、交流论坛、系统管理,用户:首页、个人中心、购票信息管理、客房预订管理、我的收藏管理,......
  • vue3源码-三、ref和toRefs的实现
    实现Refref的本质就是通过类属性访问器来实现,可以将一个普通值类型进行包装import{hasChanged,isObject}from"@vue/shared";import{track,trigger}from"./effect";import{TrackOpTypes,TriggerOpTypes}from"./operations";import{reactive}from&q......
  • LinkedList底层结构和源码
    LinkedList底层结构和源码LinkedList的全面说明LinkedList底层实现了双向链表和双端队列特点可以添加任意元素(元素可以重复,包括null)线程不安全,没有实现同步LinkedList的底层操作机制LinkedList底层维护了一个双向链表LinkedList中维护了两个属性first和last分别......
  • ArrayList底层结构和源码分析
    ArrayList底层结构和源码分析ArrayList的底层操作机制源码分析ArrayList中维护了一个Object类型的数组elementDatatransientObiect[]elementData;//transient是瞬间短暂的,表示被它修饰的属性不被序列化当创建ArrayList对象是,如果使用的是无参构造器,那么初始elementD......
  • RocketMQ之消息发送源码分析
    一、概述负责生产消息,一般由业务系统负责生产消息。一个消息生产者会把业务应用系统里产生的消息发送到broker服务器。RocketMQ支持三种消息发送方式:同步消息发送(sync):当Producer发送消息到Broker时会同步等待消息处理结果;异步消息发送(async):当Producer发送消息到Broker时......
  • RocketMQ之消息接收源码分析
    一、概述对于任何一款消息中间件而言,消费者客户端一般有两种方式从消息中间件获取消息并消费:Push方式:由消息中间件(MQ消息服务器代理)主动地将消息推送给消费者;采用Push方式,可以尽可能实时地将消息发送给消费者进行消费。但是,在消费者的处理消息的能力较弱的时候(比如,消费者端......
  • 聊聊怎样快速去阅读JDK源码?
    1.前言之前断断续续读过一部分JDK常用类的源码,这里想把过程中的一些心得和方法记录下来,如果能帮到需要的小伙伴就再好不过了!本文主要分享一下我的阅读工具和阅读顺序。PS:由于当前主流使用的JDK版本仍是1.8,因此源码阅读主要是1.8版本,有些地方可以参考1.7。2.工具......
  • [HiBench] 安装HiBench,测试在Spark上跑PageRank与修改源码测试
    [HiBench]安装HiBench,测试在Spark上跑PageRank与修改源码测试背景:我想在HiBench上测试在Spark上跑PageRank性能,并想要修改PageRank的源码进行测试。本来,HiBench在README里写的已经挺清楚的了,直接照着做就行。奈何我用的服务器没有珂学上网,所以还是遇到了一点小麻烦。下载HiBe......
  • 番外篇:分享一道用Python基础+蒙特卡洛算法实现排列组合的题目(附源码)
    今日鸡汤夕阳无限好,只是近黄昏。    大家好,我是Python进阶者。    是不是觉得很诧异?明明上周刚发布了这篇:分享一道用Python基础+蒙特卡洛算法实现排列组合的题目(附源码),今天又来一篇,名曰番外篇!其实今天是想给大家分享【......