Merge pull request #136435 from Jefftree/leaderelection-client-efficiency

Update leasecandidate client to read from cache

Kubernetes-commit: 4e3e58ffbe28674a5125cff183e8dacf97b07775
This commit is contained in:
Kubernetes Publisher
2026-03-10 18:33:12 +05:30

View File

@@ -35,6 +35,8 @@ import (
"k8s.io/client-go/util/workqueue"
"k8s.io/klog/v2"
"k8s.io/utils/clock"
coordinationv1beta1listers "k8s.io/client-go/listers/coordination/v1beta1"
)
const requeueInterval = 5 * time.Minute
@@ -46,6 +48,7 @@ type CacheSyncWaiter interface {
type LeaseCandidate struct {
leaseClient coordinationv1beta1client.LeaseCandidateInterface
leaseCandidateInformer cache.SharedIndexInformer
leaseCandidateLister coordinationv1beta1listers.LeaseCandidateLister
informerFactory informers.SharedInformerFactory
hasSynced cache.InformerSynced
@@ -81,15 +84,18 @@ func NewCandidate(clientset kubernetes.Interface,
// are started for leader elected components
informerFactory := informers.NewSharedInformerFactoryWithOptions(
clientset, 5*time.Minute,
informers.WithNamespace(candidateNamespace),
informers.WithTweakListOptions(func(options *metav1.ListOptions) {
options.FieldSelector = fieldSelector
}),
)
leaseCandidateInformer := informerFactory.Coordination().V1beta1().LeaseCandidates().Informer()
leaseCandidateLister := informerFactory.Coordination().V1beta1().LeaseCandidates().Lister()
lc := &LeaseCandidate{
leaseClient: clientset.CoordinationV1beta1().LeaseCandidates(candidateNamespace),
leaseCandidateInformer: leaseCandidateInformer,
leaseCandidateLister: leaseCandidateLister,
informerFactory: informerFactory,
name: candidateName,
namespace: candidateNamespace,
@@ -173,7 +179,7 @@ func (c *LeaseCandidate) enqueueLease() {
// a bool (true if this call created the lease), or any error that occurs.
func (c *LeaseCandidate) ensureLease(ctx context.Context) error {
logger := klog.FromContext(ctx)
lease, err := c.leaseClient.Get(ctx, c.name, metav1.GetOptions{})
lease, err := c.leaseCandidateLister.LeaseCandidates(c.namespace).Get(c.name)
if apierrors.IsNotFound(err) {
logger.V(2).Info("Creating lease candidate")
// lease does not exist, create it.