Controller Expectation
在Kubernetes中
,Controller Expectation
(控制器期望机制)是一种用于协调多个控制器对共享资源的操作的机制。它通过维护每个控制器对资源的期望状态,以确保只有一个控制器能够成功执行操作。
该机制的实现是通过Expectations
对象来管理的。Expectations
对象是一个保存了资源键(Resource Key)和期望计数(Expectation Count)之间映射关系的数据结构。每个控制器都可以通过Expectations
对象来声明它对某个资源键的期望计数。
当控制器需要执行对资源的操作时,它会先检查Expectations
对象中对应资源键的期望计数是否满足要求。如果满足,则该控制器可以执行操作,并将期望计数减一。如果不满足,则跳过对应的操作
通过使用Controller Expectation
机制,可以有效地协调多个控制器并发对共享资源进行操作,避免了冲突和竞争条件的发生。这种机制能够确保每个控制器在执行操作之前都满足了其期望的前置条件,从而保证了系统的一致性和正确性。
Controller Expectation实现
1 | // pkg/controller/controller_utils.go |
expection在replicaSetController中的使用
1 | // pkg/controller/replicaset/replica_set.go |
1 | // pkg/controller/replicaset/replica_set.go |
REF:
1.pkg/controller/controller_utils.go
2.pkg/controller/replicaset/replica_set.go
3.pkg/controller/controller_utils.go