首页 > 编程语言 >kubernetes DeploymentController 源码解析

kubernetes DeploymentController 源码解析

时间:2024-05-17 11:07:58浏览次数:25  
标签:obj kubernetes DeploymentController dc 源码 func interface logger Informer

DeploymentController 对象从 NewDeploymentController 方法开始创建,我们首先看这个方法

 1 // NewDeploymentController creates a new DeploymentController.
 2 func NewDeploymentController(ctx context.Context, dInformer appsinformers.DeploymentInformer, rsInformer appsinformers.ReplicaSetInformer, podInformer coreinformers.PodInformer, client clientset.Interface) (*DeploymentController, error) {
 3     eventBroadcaster := record.NewBroadcaster()
 4     logger := klog.FromContext(ctx)
 5     dc := &DeploymentController{
 6         client:           client,
 7         eventBroadcaster: eventBroadcaster,
 8         eventRecorder:    eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: "deployment-controller"}),
 9         queue:            workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "deployment"),
10     }
11     dc.rsControl = controller.RealRSControl{
12         KubeClient: client,
13         Recorder:   dc.eventRecorder,
14     }
15 
16     dInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
17         AddFunc: func(obj interface{}) {
18             dc.addDeployment(logger, obj)
19         },
20         UpdateFunc: func(oldObj, newObj interface{}) {
21             dc.updateDeployment(logger, oldObj, newObj)
22         },
23         // This will enter the sync loop and no-op, because the deployment has been deleted from the store.
24         DeleteFunc: func(obj interface{}) {
25             dc.deleteDeployment(logger, obj)
26         },
27     })
28     rsInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
29         AddFunc: func(obj interface{}) {
30             dc.addReplicaSet(logger, obj)
31         },
32         UpdateFunc: func(oldObj, newObj interface{}) {
33             dc.updateReplicaSet(logger, oldObj, newObj)
34         },
35         DeleteFunc: func(obj interface{}) {
36             dc.deleteReplicaSet(logger, obj)
37         },
38     })
39     podInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
40         DeleteFunc: func(obj interface{}) {
41             dc.deletePod(logger, obj)
42         },
43     })
44 
45     dc.syncHandler = dc.syncDeployment
46     dc.enqueueDeployment = dc.enqueue
47 
48     dc.dLister = dInformer.Lister()
49     dc.rsLister = rsInformer.Lister()
50     dc.podLister = podInformer.Lister()
51     dc.dListerSynced = dInformer.Informer().HasSynced
52     dc.rsListerSynced = rsInformer.Informer().HasSynced
53     dc.podListerSynced = podInformer.Informer().HasSynced
54     return dc, nil
55 }

 

标签:obj,kubernetes,DeploymentController,dc,源码,func,interface,logger,Informer
From: https://www.cnblogs.com/mrpei/p/18197498

相关文章

  • DuckDB 源码配置
    DuckDB源码配置源码编译sudoapt-getupdate&&sudoapt-getinstall-ygitg++cmakeninja-buildlibssl-devgitclonegit@github.com:duckdb/duckdb.gitcdduckdbmakedebug/releaseissue当我们编译debug版本的时候可能会出现如下图所示的问题:调试配置{/......
  • 在Kubernetes中,您可以通过几种方式来禁止某个Pod调度
    在Kubernetes中,您可以通过几种方式来禁止某个Pod调度到节点上。以下是一些方法:NodeSelector:您可以使用NodeSelector来限制Pod只能调度到带有特定标签的节点上。如果您希望完全禁止Pod调度到某些节点上,可以确保这些节点不拥有所需的标签,这将阻止Pod调度到这些节点。例如,要禁止P......
  • Android源码编译报错 FAILED: out/soong/build.ninja
    网上查了比较多资料发现是swap分区不够导致的,修改swap分区大小参考如下:https://blog.csdn.net/phj1990/article/details/124961180https://zhuanlan.zhihu.com/p/399986218swap分区大小选择:内存<=4g:Swap至少4G内存4~16G:Swap至少8G内存16G~64G:Swap至少16G内存64......
  • 02快速上手drf、CBV源码分析、APIVIEW源码分析
    快速上手drf、CBV源码分析、APiview源码分析一、快速上手drf【1】安装drfpipinstalldjangorestframework注意:安装时不指定版本,默认下载最新版本每个版本有对应的解释器版本和django限制要求,下载时官网查看一下如果django版本是3以下,drf最新跟django3以下版本不兼容版......
  • Spring源码分析:List集合注入
    pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://ma......
  • 基于Java网络书店商城设计实现(源码+lw+部署文档+讲解等)
    系统介绍:随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于网络书店商城当然也不能排除在外,随着网络技术的不断成熟,带动了网络书店商城,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种个性化的平台特......
  • jwt揭秘(含源码示例和视频)
    jwt揭秘摘自:https://www.cnblogs.com/wupeiqi/p/11854573.html武沛齐博客JSONWebTokens,是一种开发的行业标准RFC7519,用于安全的表示双方之间的声明。目前,jwt广泛应用在系统的用户认证方面,特别是现在前后端分离项目。1.jwt认证流程在项目开发中,一般会按照上图所示......
  • Kubernetes - [03] 安装部署
    Kubeadm部署k8s集群  一、准备工作1.1、组件组件:Harbor(私有DockerHub)、Router服务器操作系统:Centos7+(内核3.0+,最好内核4.40+) 1.2、服务器主机名IP地址角色备注ctos79-01192.168.2.131master管理节点ctos79-02192.168.2.132worker ctos79-0......
  • 【源码】蚁群算法TSP问题可视化
    ACO.Visualization项目本项目演示蚁群算法求解旅行商问题的可视化过程,包括路径上的信息素浓度、蚁群的运动过程等。项目相关的代码:https://github.com/anycad/ACO.Visualization注:本项目基于.NET8开发,需要安装VS2022最新版本。运行效果:https://www.bilibili.com/video/BV1Bf42......
  • 【Elasticsearch】系统已经配置了JAVA_HOME,ElasticSearch源码还是操作gradle失败(JAVA_
    先看下报错内容吧,如下:FAILURE:Buildcompletedwith2failures.1:Taskfailedwithanexception.-----------*Where:Buildfile'/Users/liubolun/IdeaProjects/elasticsearch/benchmarks/build.gradle'line:20*Whatwentwrong:Aproblemoccurredevalu......