带你读《云原生应用开发 Operator原理与实践》第三章 Kubebuilder 原理3.3 Controller-runtime 模块分析(九)

简介: 带你读《云原生应用开发 Operator原理与实践》第三章 Kubebuilder 原理3.3 Controller-runtime 模块分析

3.3.5       Cache

 

1. Cache是什么

 

Kubernetes是典型的 Server-Client的架构,APIServer 作为集群统一的操作入口,任何对资源所做的操作(包括增删改查)都必须经过 APIServer。为了减轻 APIServer的压力,Controller-runtime 抽象出一个 Cache,Client端对 APIServer 数据的读取和监听操作都将通过 Cache层来进行。

Cache 接口的实现见代码清单3-44。

typeCacheinterface{client.Reader


Informers


}

 

Cache接口定义了如下两个接口。

(1)  client.Reader:用于从 Cache中获取及列举 Kubernetes集群的资源。

(2)   Informers:可为不同的 GVK创建或获取对应的 Informer,并将 Index添加到对应的 Informer中。

2. Cache的初始化

 

ControllerManager的初始化启动过程中,将会构建 Cache层,以供 Manager使用。在用户没有指定 Cache初始化函数的前提下,将使用 Controller-runtime默认提供的Cache初始化函数,本节将依据默认提供的函数,阐述 Cache初始化的流程。

Controller-runtime提供的Cache初始化函数位于 pkg/cache/cache.go#L111下,完整的初始化流程如图 3-5所示。


image.png

 

 

3—5Cache 初始化流程

 

(1)  设置默认参数:若 Scheme为空, 则设置为 scheme.Scheme;若 Mapper空, 则 通 过apiutil.NewDiscoveryRESTMapper基 于 Discovery的 信 息 构 建 出 一 个RESTMapper,用于管理所有 Object 的信息;若同步时间为空,则将 Informer的同步时间设置为 10小时。

(2)初始化 InformersMap,3种不同类型的Object(structured、unstructured、metadata-only)分别构建 InformersMap。

(3)初始化 specificInformersMap:该接口通过 ObjectGVK的组合信息创建并缓Informers。

(4)定义 List-Watch函数:为 3种不同类型的Object实现 List-Watch函数,通过该函数可对GVK进行 ListWatch操作。

通过Cache的初始化流程,我们可以看出 Cache主要创建了InformersMap,Scheme中的每个GVK都会创建对应的Informer,再通过informersByGVKMap,实现GVKInformer的映射;每个Informer都会通过List-Watch函数对相应的GVK进行ListWatch操作。

3. Cache的启动

 

Cache启动的核心是启动创建的所有Informer(见代码清单3-45)。

func(ip*specificInformersMap)Start(ctxcontext.Context){


func(){

...

//Starteachinformer

for_,informer:=rangeip.informersByGVK{goinformer.Informer.Run(ctx.Done())

}

...


}

 

Informer 的启动流程主要包含以下3个步骤,具体实现细节可参考2.2.6节。

(1)  初始化 DeltaFIFO队列。

(2)  创建内部 Controller:配置 DeltaFIFO 队列和事件的处理函数。

(3)  启动 Controller:创建 Reflector,负责监听 APIServer上指定的 GVK,将 Add、Update、Delete变更事件写入 DeltaFIFO 队列中,作为变更事件的生产者;Controller的事件处理函数HandleDeltas() 会消费这些变更事件,负责将更新写入本地 Indexer,同时将这些 Add、Update、Delete事件分发给之前注册的监听器。

相关文章
|
2月前
|
Cloud Native 数据处理 云计算
探索云原生技术在大数据分析中的应用
随着云计算技术的不断发展,云原生架构作为一种全新的软件开发和部署模式,正逐渐引起企业的广泛关注。本文将探讨云原生技术在大数据分析领域的应用,介绍其优势与挑战,并探讨如何利用云原生技术提升大数据分析的效率和可靠性。
|
2月前
|
Cloud Native 安全 持续交付
构建未来:云原生架构的演进与实践
【2月更文挑战第30天】 随着数字化转型的深入,企业对于信息技术的需求日益复杂化和动态化。传统的IT架构已难以满足快速迭代、灵活扩展及成本效率的双重要求。云原生技术作为解决这一矛盾的关键途径,通过容器化、微服务、持续集成/持续部署(CI/CD)等手段,实现了应用的快速开发、部署及运维。本文将探讨云原生架构的最新发展,分析其如何助力企业构建更加灵活、高效的业务系统,并结合实际案例,展示云原生转型过程中的最佳实践和面临的挑战。
|
13天前
|
机器学习/深度学习 Cloud Native 持续交付
构建高效机器学习模型的策略与实践构建未来:云原生技术在企业数字化转型中的关键作用
【4月更文挑战第30天】 在机器学习领域,构建一个高效的模型不仅需要深厚的理论基础,还需结合先进的技术手段和策略。本文将探讨一系列提升模型性能的方法,包括数据预处理、特征选择、模型调参以及集成学习等。通过具体案例分析,揭示这些方法如何在实际问题中得以应用,并讨论它们对模型性能的影响。文中还将涉及最新的研究进展,为读者提供前瞻性的指导意义。 【4月更文挑战第30天】随着企业加速其数字化转型之旅,云原生技术已成为推动创新和灵活性的核心。本文深入探讨了云原生架构的原则,包括微服务、容器化、持续集成/持续部署(CI/CD)、以及声明式APIs。分析了这些技术如何共同促进可伸缩性、敏捷性和容错性,同时
|
13天前
|
Kubernetes 监控 Cloud Native
构建未来:云原生架构的演进与实践
【4月更文挑战第30天】 随着数字化转型的不断深入,企业对IT基础设施的要求日益提高。云原生技术以其独特的弹性、可扩展性和敏捷性成为推动现代应用开发的关键动力。本文将探讨云原生架构的核心组件、实施策略以及面临的挑战,旨在为读者提供一个关于如何有效构建和部署云原生应用的全面视角。
|
13天前
|
Cloud Native Devops 持续交付
构建未来应用:云原生架构在现代企业中的实践与挑战
【4月更文挑战第29天】 随着数字化转型的加速,企业正迅速转向云计算以支撑其业务敏捷性和创新。云原生技术,作为推动这一转型的关键因素,正在重新定义软件开发和运维模式。本文将深入探讨云原生架构的核心组件,包括容器化、微服务、持续集成/持续部署(CI/CD)以及DevOps文化,并分析这些技术如何帮助企业实现弹性、可扩展和高效的应用部署。同时,我们将讨论在采纳云原生实践中所面临的挑战,包括安全性、治理和人才缺口等问题。
|
14天前
|
运维 Cloud Native Devops
构建未来应用:云原生架构的演进与实践
【4月更文挑战第29天】在数字化转型的浪潮中,企业亟需灵活、高效的技术支撑来应对市场的快速变化。云原生架构以其独特的设计理念和技术栈,成为推动这一变革的关键力量。本文深入探讨了云原生的核心概念、关键技术和实施策略,旨在为企业提供一个清晰的云原生转型蓝图,助力其构建更加动态、可扩展的应用系统。
|
14天前
|
Kubernetes Cloud Native 持续交付
构建未来:云原生架构在现代企业中的应用与实践
【4月更文挑战第29天】 随着数字化转型的浪潮席卷各行各业,企业对于信息技术基础设施的要求日益提高。传统的IT架构已难以满足快速迭代、灵活扩展和持续创新的需求。本文聚焦于云原生架构,一种为云计算环境量身打造的设计理念和技术集合,旨在帮助企业构建更加灵活、可靠和高效的系统。通过对云原生核心组件的解析、实施策略的探讨以及成功案例的分析,我们揭示了云原生架构如何助力企业在竞争激烈的市场中保持领先地位。
|
18天前
|
人工智能 边缘计算 Cloud Native
云原生架构的未来展望与实践挑战
【4月更文挑战第24天】在数字化转型的浪潮中,云原生架构以其高度灵活、可扩展的特点成为企业技术战略的核心。本文深入探讨了云原生技术的最新发展趋势,分析了在实际部署和运维过程中面临的挑战,并提出了相应的解决方案。通过实例分析,本文旨在为企业实施云原生架构提供参考和指导。
|
19天前
|
Cloud Native Devops 持续交付
构建未来:云原生技术在现代IT架构中的演进与实践
【4月更文挑战第24天】 随着企业数字化转型的深入,云原生技术正成为推动创新和敏捷性的关键技术。本文聚焦于云原生技术的发展历程及其在现代IT架构中的应用,探讨了如何利用容器化、微服务、DevOps和持续集成/持续部署(CI/CD)等核心概念来优化资源利用率,提高系统弹性,并加速产品上市时间。通过分析多个行业案例,文章揭示了云原生实践对企业竞争力的显著影响,并提出了面向未来的IT架构战略建议。
|
29天前
|
Kubernetes 监控 Cloud Native
构建高效云原生应用:基于Kubernetes的微服务治理实践
【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
23 4

热门文章

最新文章