Skip to content

Commit 168fa18

Browse files
author
Zhang Jun
committed
WIP: update
1 parent f1bee44 commit 168fa18

5 files changed

+643
-137
lines changed

client-go/3.listwatch-reflector-controller.md

+4-3
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ ListWatch 的 `List()` 和 `Watch()` 方法是直接调用内部的 `ListFunc()`
117117

118118
### 使用 ListWatch 的 Informer
119119

120-
后文会介绍,各资源类型都有自己特定的 Informer(codegen 工具会自动生成),如 [DeploymentInformer](k8s.io/client-go/informers/extensions/v1beta1/deployment.go),它们使用自己资源类型的 ClientSet 来初始化 ListWatch,所以只返回对应的资源类型。
120+
后文会介绍,各资源类型都有自己特定的 Informer(codegen 工具自动生成),如 [DeploymentInformer](k8s.io/client-go/informers/extensions/v1beta1/deployment.go),它们使用自己资源类型的 ClientSet 来初始化 ListWatch,只返回对应类型的对象:
121121

122122
``` go
123123
// 来源于 k8s.io/client-go/informers/extensions/v1beta1/deployment.go
@@ -596,7 +596,8 @@ type InformerSynced func() bool
596596

597597
### 自定义 Controller 使用 HasSynced() 方法的场景
598598

599-
在开发 K8S Controller 的时候,
599+
在开发 K8S Controller 的时候,一个惯例是调用 cache.WaitForCacheSync,等待所有 Informer Cache 都同步后才启动消费 workqueue 的 worker:
600+
600601
``` go
601602
// 来源于:https://github.com/kubernetes/sample-controller/blob/master/controller.go
602603

@@ -618,7 +619,7 @@ func NewController(
618619
kubeclientset: kubeclientset,
619620
sampleclientset: sampleclientset,
620621
deploymentsLister: deploymentInformer.Lister(),
621-
deploymentsSynced: deploymentInformer.Informer().HasSynced, // Infomer 的 HasSynced() 方法赋值
622+
deploymentsSynced: deploymentInformer.Informer().HasSynced, // Infomer 的 HasSynced() 方法
622623
}
623624
...
624625
}

client-go/4.informer.md

-134
This file was deleted.

0 commit comments

Comments
 (0)