Below you will find pages that utilize the taxonomy term “Informers”
February 15, 2023
kubernetes 之 client-go 之 informer 工作原理源码解析
"\u003cp\u003e本文主要介绍有关 \u003ccode\u003eclient go\u003c/code\u003e 架构实现原理,在整个client-go架构中有一个很重要的组件就是 \u003ccode\u003einformer\u003c/code\u003e,本节我们重点对其进行一些介绍。\u003c/p\u003e\n\u003ch1 id=\"informer-机制\"\u003eInformer 机制\u003c/h1\u003e\n\u003cp\u003e采用 k8s HTTP API 可以查询集群中所有的资源对象并 Watch 其变化,但大量的 HTTP 调用会对 API Server 造成较大的负荷,而且网络调用可能存在较大的延迟。除此之外,开发者还需要在程序中处理资源的缓存,HTTP 链接出问题后的重连等。为了解决这些问题并简化 Controller 的开发工作,K8s 在 client go 中提供了一个 \u003ccode\u003einformer\u003c/code\u003e 客户端库,可以视其为一个组件。\u003c/p\u003e\n\u003cp\u003e在 Kubernetes 中,\u003ccode\u003eInformer\u003c/code\u003e 可以用于监视 Kubernetes API 服务器中的资源并将它们的当前状态缓存到本地(\u003ccode\u003eindex -\u0026gt; store)\u003c/code\u003e ,这样就避免了客户端不断地向 API 服务器发送请求,直接从本地即可。\u003c/p\u003e\n\u003cp\u003e相比直接采用 HTTP Watch,使用 Kubernetes Informer 有以下优势:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e减少 API 服务器的负载:通过在本地缓存资源信 …\u003c/li\u003e\u003c/ul\u003e"