带你读《云原生应用开发:Operator原理与实践》——2.2.3 Client-go 架构

简介: 带你读《云原生应用开发:Operator原理与实践》——2.2.3 Client-go 架构

2.2.3 Client-go 架构


Client-go 主要用在 Kubernetes 控制器中,包括内置控制器(如 kube-controller-manager)和 CRD 控制器,Client-go 架构如图 2-6 所示。根据图 2-6 介绍 Client-go 中的几个组件。

image.png

图 2-6 Client-go 架构

(1) Reflector:使用 List-Watch 的方法监控指定类型的资源对象,从 Kubernetes APIServer 中 List 该资源的所有实例,取得最新的 ResourceVersion,然后使用 Watch 方法监听该 resourceVersion 之后的所有变化,若过程中出现异常,Reflector 则会从断开的 ResourceVersion 处重现尝试监听所有变化,一旦该对象的实例有创建、删除、更新动作,Reflector 都会收到“事件通知”,并利用反射机制将监听的结果实例化成具体的对象。这时,该事件及它对应的实例对象的组合称为增量(Delta),之后会被存进 DeltaFIFO 中。

(2) DeltaFIFO:作为一个增量队列,将 Reflector 监控变化的对象形成一个 FIFO 队列,此处的 Delta 就是变化。

(3) LocalStore:Informer 会不断地从 DeltaFIFO 中读取增量,每出现一个对象,Informer 就会判断这个增量的事件类型,然后创建或更新本地缓存,也就是 LocalStore。例如,如果事件类型是 Added(添加对象),那么 Informer 会把这个增量中的对象保存到本地缓存中,并为它创建索引;若为删除操作,则在本地缓存中删除该对象。此外,LocalStore 还利用索引提供快速查找的能力,当使用者需要查询(Get/List) Kubernetes 对象时,可以直接请求 LocalStore ,以此减轻 Kubernetes APIServer 的压力。

(4) Workqueue:DeltaFIFO 在同步完 LocalStore 后,会 Pop 这个事件到 Controller 中,Controller 会调用事先注册的 ResourceEventHandler 回调函数(如 OnAdd、OnUpdate、OnDelete)进行处理,这些回调函数只做一些简单的过滤工作,最后将变更对象放入 Workqueue 中,供 Worker 中的业务逻辑处理。

(5) Clients:Client-go 中的各类客户端,当 Worker 中业务逻辑要操作 Kubernetes 资源时,可以通过客户端实现。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
【5月更文挑战第10天】 随着企业加速其数字化转型的步伐,云原生架构已成为实现敏捷性、可扩展性和创新的关键驱动力。本文探讨了云原生技术的兴起背景、核心技术组件以及如何通过这些技术推动企业IT基础设施的现代化。文章重点分析了容器化、微服务、持续集成/持续部署(CI/CD)和DevOps文化对于构建灵活且高效的云环境的重要性,并提供了实施云原生策略的实用建议。通过深入分析,本文旨在为决策者提供一个清晰的指南,以利用云原生架构优化其业务操作并保持竞争优势。
6 0
|
1天前
|
Cloud Native 安全 持续交付
云原生架构的未来展望
【5月更文挑战第9天】本文将探讨云原生架构的发展趋势,包括其优势、挑战以及未来的发展方向。云原生架构以其灵活性、可扩展性和高效性在企业中得到了广泛的应用。然而,随着技术的发展和业务需求的变化,云原生架构也面临着一些挑战。本文将深入分析这些挑战,并提出相应的解决策略。
|
1天前
|
Cloud Native API 开发者
构建未来:云原生架构在企业数字化转型中的关键角色
【5月更文挑战第9天】 随着企业加速迈向数字化时代,传统的IT架构已不足以支撑快速变化的市场需求。本文深入探讨了云原生架构如何成为推动企业敏捷性、可扩展性和创新能力的关键因素。通过分析微服务、容器化、持续集成与持续部署(CI/CD)等核心技术的实践应用,揭示了云原生技术如何助力企业实现真正的业务和技术一体化,以及在竞争激烈的市场中保持领先地位。
|
1天前
|
负载均衡 NoSQL 关系型数据库
深入浅出Redis(六):Redis的主从架构与主从复制原理
深入浅出Redis(六):Redis的主从架构与主从复制原理
|
2天前
|
运维 Cloud Native 持续交付
构建未来:云原生架构在现代企业中的应用与挑战
【5月更文挑战第9天】 随着数字化转型的浪潮席卷全球,企业正迅速采纳云原生技术以实现敏捷性、可扩展性和弹性。本文深入探讨了云原生架构的关键组件,包括容器化、微服务、持续集成/持续部署(CI/CD)和DevOps文化,并分析了这些技术如何帮助企业加速产品上市时间,提高运营效率,并最终实现业务目标。同时,文章也识别了企业在采纳云原生实践中可能面临的挑战,如安全性考量、团队技能提升和复杂的网络管理,并提出了相应的解决方案和最佳实践。
|
4天前
|
Cloud Native 持续交付 开发者
探索云原生架构的未来之路
【5月更文挑战第7天】 在数字化转型的浪潮中,云原生技术以其独特的敏捷性、可扩展性和弹性成为企业IT战略的关键组成部分。本文将深入剖析云原生的核心概念,探讨其在现代软件开发和运维中的应用,并预测云原生发展的潜在趋势。通过分析容器化、微服务、持续集成/持续部署(CI/CD)等关键技术的实践案例,揭示云原生如何推动企业快速响应市场变化、优化资源利用和提升服务质量。
|
4天前
|
运维 Cloud Native 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
【5月更文挑战第7天】 随着企业加速其数字化转型的步伐,云原生架构已成为推动创新及实现敏捷性的重要驱动力。本文将探讨云原生技术的基本原理,分析其在现代企业中的应用,并讨论如何借助云原生方法提升业务的弹性、可扩展性和效率。通过案例研究和最佳实践的分享,我们揭示了云原生解决方案如何助力企业在竞争激烈的市场中保持领先。
|
4天前
|
弹性计算 Cloud Native 安全
云原生架构的未来展望:如何引领企业转型与创新
【5月更文挑战第7天】随着云计算技术的不断发展,云原生架构已经成为企业数字化转型的关键驱动力。本文将深入探讨云原生架构的优势、挑战以及未来发展趋势,为企业提供一种全新的技术视角,以实现更高效、灵活和可扩展的业务运营。
|
4天前
|
Kubernetes Cloud Native 持续交付
构建未来:云原生架构在企业数字化转型中的关键角色
【5月更文挑战第7天】 随着企业加速数字化转型,云原生架构已成为推动创新和敏捷性的重要驱动力。本文将深入探讨云原生技术的基本原理,以及如何利用这些技术实现业务灵活性和响应速度的显著提升。通过分析微服务、容器化、持续集成/持续部署(CI/CD)等关键组件,我们将揭示云原生架构如何帮助企业应对快速变化的市场需求,同时确保系统的稳定性和可扩展性。
|
4天前
|
Cloud Native 安全 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
【5月更文挑战第6天】 随着企业加速其数字化进程,云原生架构已不仅仅是一种趋势,而成为推动业务敏捷性、可扩展性和创新的基石。本文深入探讨了云原生技术如何通过提供灵活的开发环境、微服务架构和持续交付机制,促进企业快速响应市场变化,并实现资源的最优化配置。通过分析多个行业案例,我们阐述了云原生架构实施的最佳实践,以及它如何帮助企业保持竞争优势,并为未来的技术演进打下坚实基础。