Lease, storageVersion
Lease
(租约)租约提供了一种机制来锁定共享资源并协调集合成员之间的活动,Kubernetes
也使用 Lease
确保在任何给定时间某个组件只有一个实例在运行。 这在高可用配置中由 kube-controller-manager
和 kube-scheduler
等控制平面组件进行使用, 这些组件只应有一个实例激活运行,而其他实例待机。
StorageVersion
是一种内部版本资源,记录了 APIServerID
和其所支持的对象版本。
当Lease
被删除时,说明API Server
实例发生了变化,所以对象支持的版本也有可能
发生变化,所以需要对storageVersion
作相应的处理。
所以storageversiongc
的作用就是当API Server
发生时更新storageversion
中记录API Server
支持的版本。
当storageversion
发生变化时,也会查询lease
信息从而更新storageversion
源码分析
1 | // staging/src/k8s.io/api/apiserverinternal/v1alpha1/types.go |
1 | // staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiserver.go |
1 | // pkg/controller/storageversiongc/gc_controller.go |
REF: